使用 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/
谢谢,
拉吉
我们已经为我们的 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/
谢谢,
拉吉