是否需要像令牌一样验证AuthenticationResult的UserInfo?

时间:2019-02-27 10:00:52

标签: asp.net jwt azure-active-directory single-sign-on adal

因此,我使用ADAL库将Azure Directory Single Sign On实施到我的应用程序。 documentation

我将{ "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字段。所以我的问题是,我仍然需要在这里进行任何验证吗?我应该验证什么?我可以在库中使用任何内置的验证方法吗?我宁愿不要手动操作。

1 个答案:

答案 0 :(得分:1)

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