1

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

4

2 回答 2

0

最简单的方法是解析id token或者access token,然后查看oidclaim,就是你的用户id,登录用户的时候会出现在你的token中。可以通过解析token找到,然后判断用户是否登录。

在此处输入图像描述

于 2021-01-10T15:32:34.340 回答
0

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

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

我在堆栈溢出(找不到链接)时看到了另一个关于“处理不知道用户是否已登录”的建议,这表明只需通过调用acquireTokenSilent 来确保令牌。最终,这只是促进在用户不知情的情况下让代币永远存在。

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

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

于 2021-04-21T06:10:18.343 回答