Azure B2C Web 应用程序 - 如何在 Web 应用程序会话生命周期之后使用刷新令牌进行身份验证

Azure B2C Web app - how authenticate with refresh token beyond web app session lifetime

我有一个 Web 应用程序,需要用户输入凭据才能访问 graph.com。我正在使用用户流策略。我可以得到 id_token,并用这个 id_token 请求 access_token 和 refresh_token。出于测试目的,我设置了以下生命周期设置:

在用户登录 15 分钟后,我再次导航到 Web 应用程序 uri 并要求用户重新输入凭据,但我想避免重新输入凭据(在受控时间内).

Azure 文档说 cookie 在 end of Web browser session 过期并且 Web 应用程序会话生命周期最长为 24 小时,我想了解我是否可以使用我的 refresh_token 来覆盖这个 24 小时限制重新认证。

我能否在浏览器再次指向网络应用程序 uri 时请求新的刷新令牌,以便用户无需再次登录?如果是这样,我看不出通常在哪里干预(Web 应用程序代码?控制器?)这个请求,然后我是否需要向 Azure AD 发送通知以让它知道用户已通过身份验证?我可以在 Fiddler 中看到重新输入凭据的请求 (oauth2/v2.0/authorize),所以不确定何时采取什么步骤。

谢谢

当用户与网站交互时,在 Web 应用程序中使用刷新令牌,但访问令牌已过期。 Web 服务器将调用 B2C 以刷新访问令牌。

当网络应用程序将用户明确发送到 /authorize 端点时,将使用 Cookie。这允许 B2C 对用户进行单点登录,或提示进行任何交互。这用于提供跨应用程序 SSO,或旅程中的 SSO,例如登录 -> 配置文件编辑(cred 提示被抑制)。

基于此:

Can I request a new refresh token when the browser points to the web app uri again so the user doesn't need to login again?

不,你不能。

您需要延长 B2C Web 应用 SSO 的生命周期,这样如果用户在关闭选项卡(而非浏览器)后浏览您的 Web 应用,他们将获得 SSO。因为他们会在这里访问 /authorize 端点,所以设置是 Web App SSO 生命周期,即 B2C Cookies。

如果您需要超过 24 小时,您可能需要查看 KMSI,但它是一个持久性 cookie,因此关闭浏览器不会让用户注销。这将需要自定义策略。