gpt4 book ai didi

azure - ADB2C的refresh_token总是在一天内过期

转载 作者:行者123 更新时间:2023-12-03 17:22:56 24 4
gpt4 key购买 nike

我已经在 adb2c 上苦苦挣扎了一段时间了。特别是刷新流程。我正在使用最新版本的 msal-browser ,一切正常,刷新 token 效果很好。唯一的问题是 token 端点返回的 refresh_token 总是在一天内过期。在这种情况下,用户只能登录一天,之后用户必须重新授权。以下是端点及其在登录后直接返回的示例。(请注意,出于测试目的,我已将 access_token 过期时间设置为 5 分钟)

端点:

https://{b2c_domain.onmicrosoft.com/{b2c_policy}/oauth2/v2.0/token

回应:

{
"access_token": "{access_token_hidden}",
"id_token": "{id_token_hidden}",
"token_type": "Bearer",
"not_before": 1610023338,
"expires_in": 300,
"expires_on": 1610023638,
"resource": "{resource_hidden}",
"client_info": "{client_info}",
"scope": "https://{adb2c_domain_hidden}.onmicrosoft.com/api/user_impersonation",
"refresh_token": "{refresh_token_hidden}",
"refresh_token_expires_in": 86400
}

当应用程序在某个时刻尝试刷新 token 时,它将再次调用 token 端点。这是第二个响应的样子:

{
"access_token": "{access_token_hidden}",
"id_token": "{id_token_hidden}",
"token_type": "Bearer",
"not_before": 1610023891,
"expires_in": 300,
"expires_on": 1610024191,
"resource": "{resource_hidden}",
"client_info": "{client_info}",
"scope": "https://{adb2c_domain_hidden}.onmicrosoft.com/api/user_impersonation",
"refresh_token": "{refresh_token_hidden}",
"refresh_token_expires_in": 85846
}

refresh_token_expires_in 未滚动。但这是可以理解的,用户不应该始终保持登录状态。但是,在我的 adb2c 策略中,以下设置处于事件状态:

enter image description here

我认为,正如我在设置中配置的那样,刷新 token 应至少有效 14 天。如果没有,甚至最多 90 天?我可以使用这些设置,但它总是会给我一个持续 1 天的刷新 token 。有谁有这方面的经验或有可能的解决方案吗?谢谢!

最佳答案

如果您使用的 Msal-Browser 在 SPA 应用程序中实现使用 PKCE 的代码授予。在这种情况下,您将获得刷新 token ,该 token 的有效期为 24 小时,并且不会滚动。 24 小时后,您需要转到 azure ad 的/authorization 端点以获取新的访问和刷新 token 。如果浏览器具有有效的登录 session ,这也可以是非交互式流程。

在Msal-browser库中,如果您配置的 session 超过24小时,那么您可以使用ssoSilent()执行静默登录,它需要您发送login_hint。

关于azure - ADB2C的refresh_token总是在一天内过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65612830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com