使用 Okta 授权外部 API 调用

Using Okta to authorize external API Calls

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

我看到 Okta 在登录后在本地存储中放置了一些 access / id 令牌,但这就是我到目前为止所获得的。

有没有办法通过 Okta 做到这一点,还是我们必须 create/store/manage 我们自己的 JWT

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

请找到我们的示例应用 here

如您所知,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/

谢谢,
拉吉