我有一个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小时限制以进行重新认证。
当浏览器再次指向Web应用程序uri时,我是否可以请求新的刷新令牌,因此用户无需再次登录?如果是这样,我看不到对此请求进行干预的常规方式(Web应用程序代码?控制器?),然后是否需要向Azure AD发送通知以使其知道用户已通过身份验证?我可以在Fiddler中看到重新输入凭据的请求(oauth2 / v2.0 / authorize),因此不确定何时要采取什么步骤。
谢谢
当用户与网站进行交互但访问令牌已过期时,Web应用程序中会使用刷新令牌。 Web服务器将呼叫B2C以刷新访问令牌。
Cookies用于通过Web App将用户显式发送到/ authorize端点。这使B2C可以向用户发起SSO或提示进行任何交互。这用于在旅途中提供跨应用程序SSO或SSO,例如,登录->配置文件编辑(禁止输入提示)。
基于此:
当浏览器再次指向Web应用程序uri时,我是否可以请求新的刷新令牌,因此用户无需再次登录?
不,你不能。
您需要延长B2C Web App的SSO生存期,这样,如果用户在关闭选项卡(而不是浏览器)后浏览到您的Web应用程序,则他们将获得SSO。由于它们将到达/ authorize端点,因此设置为Web App SSO生存期,即B2C Cookies。