【发布时间】:2022-08-23 18:29:37
【问题描述】:
我们有一个现有的应用程序使用 NextAuth 与 Okta 进行通信。一切正常,我们刚刚添加了一个需要 Okta 访问令牌的 API,我们在 NextAuth 中使用了 JWT callback 从帐户对象中获取访问令牌,并将其添加到 NextAuth session .
这一切正常,我们可以从会话中获取访问令牌并将其传递给 API,一切都很好,API 验证了访问令牌,一切都很好。但是,我们有时会回到会话并且对 API 的调用失败,因为它无法验证访问令牌,因为它已过期。
我正在查看 rotating a refresh token 的 NextAuth 文档,我发现 Okta 有一个 getting a new refresh token 的端点。这一切似乎都说得通,问题是,看看 NextAuth 中的JWT callback 返回什么,我没有得到刷新令牌,这些是 Okta 提供者返回的道具。我们得到一个访问令牌和一个 ID 令牌(它们确实包含不同的值),但我们没有得到返回的刷新令牌。
我看到关于刷新令牌的offline_access 范围的引用,我们是否需要在调用Okta 提供程序时设置它?如果是这样,怎么做?否则,是否有人设法在 NextAuth 中使用 Okta 提供程序并修复了过期的访问令牌问题?
{
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
}
-
我面临同样的问题。刷新令牌不是帐户对象的一部分
标签: reactjs next.js oauth okta next-auth