清除本地状态后,授权码流如何记住用户?

问题描述

给定一个通过 Microsoft 的 Authorization Code Flow 使用 Oauth 2.0 msal.js 的应用程序,我通过提供我的凭据登录。然后我完全清除浏览器的状态、缓存、本地/会话存储,并刷新页面,以便单页应用程序不知道我已登录,但我仍然使用 Microsoft 后端登录

当我再次启动登录时,它能够以静方式登录,而无需重新询问我的凭据。

显然,通过对 https://login.microsoftonline.com/redacted/oauth2/v2.0/token 的请求,即使我清除了 js 内存和所有缓存/会话/本地存储,Microsoft 后端也可以将我验证为同一用户

此请求如何获取有效的 code / code_verifier 以发送到授权服务器,以便在不重新输入凭据的情况下为用户获取访问令牌?


更多详情:

以下确实要求我重新输入我的凭据(正如我所期望的那样):

  • 私密/隐身标签
  • 关闭浏览器并重新打开
  • 在同一台计算机上使用不同的浏览器

以下内容要求我重新输入我的凭据并可以静登录

  • 在清除本地状态的新选项卡中进行身份验证
  • 在清除本地状态的同一浏览器的新窗口中进行身份验证
  • 刷新选项卡并清除本地状态

我希望 3 个“非”场景需要凭据,但它们不需要。如何在浏览器不保留任何本地状态的情况下进行身份验证?

解决方法

Microsoft 库存储了 AAD 拥有的 cookie,而不是我的应用程序。 answer on github