Pau*_*eld 5 oauth reactjs okta next.js next-auth
我们有一个现有应用程序使用 NextAuth 与 Okta 进行通信。这一切工作正常,我们刚刚添加了一个需要 Okta 访问令牌的 API,我们在 NextAuth 中使用JWT 回调从帐户对象中获取访问令牌,并将其添加到NextAuth 会话中。
这一切都工作正常,我们可以从会话中获取访问令牌并将其传递给 API,一切都很好,API 验证访问令牌,一切都很好。但是,有时我们回到会话时,对 API 的调用会失败,因为它无法验证访问令牌,因为它已过期。
我正在查看用于轮换刷新令牌的NextAuth 文档,我发现 Okta 有一个用于获取新刷新令牌的端点。这一切似乎都有道理,问题是,查看NextAuth 中的JWT 回调返回的内容,我没有得到刷新令牌,这些是 Okta 提供程序返回的 props。我们得到一个访问令牌和一个 ID 令牌(它们确实包含不同的值),但我们没有得到返回的刷新令牌。
我看到有关刷新令牌的offline_access 范围的参考,我们是否需要在对 Okta 提供程序的调用中设置它?如果是这样,怎么办?否则,是否有人设法在 NextAuth 中使用 Okta Provider 并修复了过期的访问令牌问题?
{
token: {
name: ...,
email: ...,
picture: .,
sub: ...
},
user: {
id: ..,
name: ...,
email: ...,
image: undefined
},
account: {
provider: 'okta',
type: 'oauth',
providerAccountId: ...,
token_type: 'Bearer',
expires_at: ...,
access_token: ...,
scope: ...,
id_token: ...
},
profile: {
sub: ...,
name: ...,
email: ...,
ver: ...,
iss: ...,
aud: ...,
iat: ...,
exp: ...,
jti: ...,
amr: [ ... ],
idp: ...,
preferred_username: ...,
auth_time: ...,
at_hash: ...
},
isNewUser: undefined
}
Run Code Online (Sandbox Code Playgroud)
您可以添加如下范围 \xe2\x80\x98
\nOktaProvider({\n clientId: process.env.OKTA_CLIENT_ID,\n clientSecret: process.env.OKTA_CLIENT_SECRET,\n issuer: process.env.OKTA_ISSUER,\n idToken: true,\n exp: true,\n authorization: { \n params: { \n scope: "openid offline_access" \n } \n }\n})\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1363 次 |
| 最近记录: |