Azure AD令牌验证-为什么要验证发行者?

时间:2020-07-10 08:10:21

标签: azure azure-active-directory msal msal.js passport-azure-ad

我有一个API服务,该服务使用Azure AD令牌进行身份验证和授权。我打算为此使用https://github.com/AzureAD/passport-azure-ad库,并且需要使用BearerStrategy-https://github.com/AzureAD/passport-azure-ad#42-bearerstrategy。我对validateIssuer属性感到困惑。 如果我正确理解文档,则需要一起使用validateIssuerissuer配置。 issuer是一个URL,其中包含租户ID和用于发行令牌的AD版本(1或2)。 作为将验证令牌的API服务,API服务为什么要关心用于发布令牌的AD版本?因此,当它只关心租户ID时,为什么还要验证发行者的URL?我想了解为什么必须验证整个发行人的网址,而不仅仅是租户ID。

1 个答案:

答案 0 :(得分:0)

在API服务中,验证器在库源文件中定义,例如Microsoft.IdentityModel.Tokens/Validators.cs。会根据令牌验证参数(Issuer,ValidateIssuer,签名等)来验证令牌。

颁发者包含具有v1.0v2.0端点的实际租户的URL。 令牌必须始终与请求它们的端点匹配,并且令牌必须始终与客户端使用该令牌调用的Web API期望的格式匹配。

为什么您需要验证发行者,因为许多服务可以生成令牌,但是您只想信任某些来源。

如果我们离开ValidateIssuer,则中间件将不会尝试验证发行方租户,这实际上意味着您的应用程序将向具有Azure AD用户的任何人打开。

有关token validation的更多信息,请参阅文档Validateissuerissuer

相关问题