azure Microsoft MSAL 2.0msal浏览器时如何识别用户是否登录?

问题描述

我们在 REACT SPA 中使用 MSAL 2.0 进行身份验证。根 App 组件实现了一个处理身份验证部分的 React 高阶组件 (HOC)。在认证逻辑中,我们如何检查用户在初始登录后是否登录,以避免重新渲染与从图形api获取用户信息相关的逻辑。要求是在用户第一次登录并从图形 api 中检索信息后,应用程序应重用该信息,直到登录过期。这里最好的方法是什么?

解决方法

最简单的方法是解析id tokenaccess token,然后查看oid声明,它是你的用户ID,它会在你登录时出现在你的token中用户。可以通过解析token找到,然后判断用户是否登录。

enter image description here

,

这是一个很好的问题,有点担心它没有被提出更多。在我的整个职业生涯中,我一直被指示注销我没有用来减少攻击面的应用程序,但 MSAL 似乎试图让这变得更难。例如,使用 cookie 的默认单点登录。这似乎是一个中间人,他缓存每个应用程序令牌,允许在不通知用户的情况下登录新应用程序,并建议将令牌保持活动时间超过所需时间。

似乎最好始终检查用户是否已通过身份验证并提供注销按钮。这将通知用户他们有一个活动令牌并允许他们注销。

我看到了另一个关于堆栈溢出(找不到链接)时“处理不知道用户是否登录”的建议,该建议建议仅通过调用acquireTokenSilent 来确保令牌。归根结底,这只是促进在用户不知情的情况下让令牌永远活着。

Carl Zhao 建议自己解析令牌是一种解决方法,但您的回答是一个有效的问题,因为我们正在使用一个应该抽象出这种知识需求的库;暗示库存在潜在问题。 Microsoft's You Tube video(大约 7:01)指示我们不要自己解析令牌。这有点令人费解,因为微软谈论的是从 Id 令牌而不是访问令牌中读取;但是两者都需要访问 API;两者都必须有效才能“登录”

我的建议:向需要授权的端点发出请求并处理 401(未授权)状态代码。 :(