【问题标题】:Using Okta to authorize external API Calls使用 Okta 授权外部 API 调用
【发布时间】:2021-01-28 19:09:55
【问题描述】:

我们已经为我们的 Vue 前端应用程序设置了一个 Okta 应用程序 (SPA)/授权服务器,供用户登录。我们正在尝试使用它,以便当用户登录到我们的 Vue 应用程序时,我们可以使用 Okta 的“会话”向我们的外部 .Net Core API 发送请求,并验证用户是否通过 Okta 登录并且可以点击指定端点(这里唯一的条件是用户已经登录并且仍然有一个有效的会话)。

我看到 Okta 会在登录后将一些 access / id 令牌放在本地存储中,但目前为止我所了解的情况差不多。

有没有办法通过 Okta 做到这一点,还是我们必须创建/存储/管理我们自己的 JWT's?

【问题讨论】:

    标签: .net asp.net-core oauth openid okta


    【解决方案1】:

    如您所见,Okta SDK 默认将 JWT 令牌存储在本地存储中。 您可以使用 Okta 的 AuthJS SDK(您可能已经在使用它),您可以使用以下代码来检索令牌:

    authClient.tokenManager.get('accessToken')
    .then(function(token) {
      if (token && !authClient.tokenManager.hasExpired(token)) {
        // Token is valid
        console.log(token);
      } else {
        // Token has been removed due to expiration or error while renewing
      }
    })
    .catch(function(err) {
      // handle OAuthError or AuthSdkError (AuthSdkError will be thrown if app is in OAuthCallback state)
      console.error(err);
    });
    

    然后,您可以在调用外部 API 时将访问令牌作为不记名令牌传递。服务 API 请求的资源服务器应该使用自省或本地验证来验证这些 OAuth 令牌。您可以在此处找到更多详细信息:https://developer.okta.com/code/dotnet/jwt-validation/

    谢谢你,
    拉杰

    【讨论】:

      【解决方案2】:

      对于授权,您应该将访问令牌(来自 Okta)作为 Bearer 令牌传递给您的 .net api。

      请找到我们的示例应用here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 2016-09-08
        • 2014-10-03
        • 2012-02-15
        • 2021-04-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多