我是否需要像验证令牌一样验证 AuthenticationResult 的 UserInfo?
Do I need to validate the UserInfo of AuthenticationResult like we need for the token?
所以我使用 ADAL
库来实现我的应用程序的 Azure 目录单一登录。
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 令牌是一种很好的做法,但在我的情况下,这些令牌都没有被直接使用。我只是 retrieve/use UniqueId
字段。所以我的问题是,我还需要在这里做任何验证吗?我应该验证什么?库中有没有我可以利用的内置验证方法?我不想手动操作。
在这种情况下,我会说验证不是强制性的,因为您收到来自 Azure AD 的直接响应令牌。
如果有人可以拦截并替换令牌,那么他们也可以替换您的应用程序检索到的签名密钥。
这意味着他们将能够伪造他们想要的任何令牌。
所以我使用 ADAL
库来实现我的应用程序的 Azure 目录单一登录。
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 令牌是一种很好的做法,但在我的情况下,这些令牌都没有被直接使用。我只是 retrieve/use UniqueId
字段。所以我的问题是,我还需要在这里做任何验证吗?我应该验证什么?库中有没有我可以利用的内置验证方法?我不想手动操作。
在这种情况下,我会说验证不是强制性的,因为您收到来自 Azure AD 的直接响应令牌。 如果有人可以拦截并替换令牌,那么他们也可以替换您的应用程序检索到的签名密钥。 这意味着他们将能够伪造他们想要的任何令牌。