清除本地状态后,Authorization Code 流程如何记住用户?
How does Authorization Code flow remember the user after local state is cleared?
给定一个使用 Oauth 2.0 的应用 Authorization Code Flow via Microsoft's msal.js,我通过提供我的凭据登录。然后我完全清除我的浏览器状态、缓存、local/session 存储,并刷新页面,这样单页应用程序就不知道我已经登录了,但我仍然使用 Microsoft 后端登录。
当我发起另一次登录时,它可以静默进行,无需重新询问我的凭据。
显然,通过对 https://login.microsoftonline.com/redacted/oauth2/v2.0/token
的请求,Microsoft 后端可以将我验证为同一用户,即使我清除了 js 内存和所有 cache/session/local 存储
此请求如何获得有效的 code / code_verifier 以发送到授权服务器,以便在不重新输入凭据的情况下为用户取回访问令牌?
更多详情:
以下需要我重新输入我的凭据(正如我所期望的那样):
- 一个private/incognito选项卡
- 关闭浏览器并重新打开
- 在同一台计算机上使用不同的浏览器
以下 不 要求我重新输入我的凭据并且可以静默登录:
- 正在清除本地状态的新选项卡中进行身份验证
- 正在清除本地状态的同一浏览器的新 window 中进行身份验证
- 正在刷新选项卡并清除本地状态
我希望 3 个“不”场景需要凭据,但它们不需要。我如何在浏览器不保留任何本地状态的情况下进行身份验证?
Microsoft 库正在存储 AAD 拥有的 cookie,而不是我的应用程序。
answer on github
给定一个使用 Oauth 2.0 的应用 Authorization Code Flow via Microsoft's msal.js,我通过提供我的凭据登录。然后我完全清除我的浏览器状态、缓存、local/session 存储,并刷新页面,这样单页应用程序就不知道我已经登录了,但我仍然使用 Microsoft 后端登录。
当我发起另一次登录时,它可以静默进行,无需重新询问我的凭据。
显然,通过对 https://login.microsoftonline.com/redacted/oauth2/v2.0/token
的请求,Microsoft 后端可以将我验证为同一用户,即使我清除了 js 内存和所有 cache/session/local 存储
此请求如何获得有效的 code / code_verifier 以发送到授权服务器,以便在不重新输入凭据的情况下为用户取回访问令牌?
更多详情:
以下需要我重新输入我的凭据(正如我所期望的那样):
- 一个private/incognito选项卡
- 关闭浏览器并重新打开
- 在同一台计算机上使用不同的浏览器
以下 不 要求我重新输入我的凭据并且可以静默登录:
- 正在清除本地状态的新选项卡中进行身份验证
- 正在清除本地状态的同一浏览器的新 window 中进行身份验证
- 正在刷新选项卡并清除本地状态
我希望 3 个“不”场景需要凭据,但它们不需要。我如何在浏览器不保留任何本地状态的情况下进行身份验证?
Microsoft 库正在存储 AAD 拥有的 cookie,而不是我的应用程序。 answer on github