0

在我的反应应用程序中,我通过传递不同的权限使用 msal loginPopup 使用 azure b2c 的登录和编辑配置文件使用流程。

当我登录时,会生成一个带有声明的新 ID 令牌。登录后,当我使用 msal loginPopup(editProfile authority) 编辑我的个人资料时,我能够更改个人资料并成功获得一个新的 ID 令牌,并在浏览器中更新了声明。现在我在浏览器中有 2 个 ID 令牌,一个通过登录生成,另一个通过编辑配置文件生成。由于随机值中 ID 令牌的密钥,有什么方法可以删除通过登录生成的 ID 令牌。

4

1 回答 1

0

根据您的方案和设置,在尝试登录和编辑配置文件期间生成的 ID 令牌应该被理想地缓存,因为您正在使用“loginPopup”方法进行凭据验证。

“loginPopup”方法打开一个带有 Microsoft 身份平台端点的弹出窗口,以提示和验证用户的凭据。成功登录后,msal.js 会启动授权代码流。此时,一个受 PKCE 保护的授权码被发送到受 CORS 保护的令牌端点并被交换为令牌。您的应用程序接收 ID 令牌、访问令牌和刷新令牌并由 msal.js 处理,并缓存令牌中包含的信息。当您使用 Microsoft 身份验证库获取访问令牌时,会缓存该令牌。当应用程序需要一个令牌时,它应该首先调用'AcquireTokenSilent'方法来验证一个可接受的令牌是否在缓存中。清除缓存是通过从缓存中删除帐户来实现的。这不会删除会话 cookie,不过,它在浏览器中。MSAL 维护一个令牌缓存(或两个用于机密客户端应用程序的缓存)并在获取令牌后对其进行缓存。在许多情况下,尝试静默获取令牌将基于缓存中的令牌获取具有更多范围的另一个令牌。它还能够在接近到期时刷新令牌(因为令牌缓存也包含刷新令牌)。请参考下面的授权码流程图以便更好地理解:- s 即将到期(因为令牌缓存还包含一个刷新令牌)。请参考下面的授权码流程图以便更好地理解:- s 即将到期(因为令牌缓存还包含一个刷新令牌)。请参考下面的授权码流程图以便更好地理解:-

认证协议图

因此,您可能需要检查浏览器中是否启用了缓存或 cookie 访问,如果启用,则可能需要清除浏览器中的缓存,以便相应地管理令牌。

请找到以下文档链接供您参考:-

https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-net-clear-token-cache https://docs.microsoft.com/en-us/azure/active-directory /develop/msal-acquire-cache-tokens https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-react https://docs.microsoft.com/en-us /azure/active-directory/develop/v2-oauth2-auth-code-flow

感谢您,

于 2021-07-30T13:39:03.043 回答