首页 > 解决方案 > 我需要像我们需要令牌一样验证 AuthenticationResult 的 UserInfo 吗?

问题描述

因此,我使用该ADAL库在我的应用程序中实现 Azure 目录单点登录。 文件

我添加{ "scope", "openid"}到请求 url 以便id_token返回。然后我检索用户的唯一 ID 以在数据库中查找。

AuthenticationContext ac = new AuthenticationContext(MicrosoftAuthBaseURL);

ClientCredential clcred = new ClientCredential(MicrosoftAppId, MicrosoftAppSecret);
AuthenticationResult acResult = ac.AcquireTokenByAuthorizationCodeAsync(code, new Uri(RedirectURI), clcred).Result;

SignInUser(acResult.UserInfo.UniqueId);

我知道验证访问令牌或 id 令牌是一个好习惯,但在我的情况下,这些令牌都没有直接使用。我只是检索/使用该UniqueId字段。所以我的问题是,我还需要在这里做任何验证吗?我应该验证什么,我可以在库中利用任何内置的验证方法吗?我不喜欢手动做。

标签: asp.netjwtazure-active-directorysingle-sign-onadal

解决方案


在这种情况下,我会说验证不是强制性的,因为您会收到来自 Azure AD 的直接响应的令牌。如果有人可以拦截并替换令牌,那么他们也可以替换您的应用程序检索到的签名密钥。这意味着他们将能够伪造他们想要的任何令牌。


推荐阅读