我有一个API服务,该服务使用Azure AD令牌进行身份验证和授权。我打算为此使用https://github.com/AzureAD/passport-azure-ad库,并且需要使用BearerStrategy-https://github.com/AzureAD/passport-azure-ad#42-bearerstrategy。我对validateIssuer
属性感到困惑。
如果我正确理解文档,则需要一起使用validateIssuer
和issuer
配置。 issuer
是一个URL,其中包含租户ID和用于发行令牌的AD版本(1或2)。
作为将验证令牌的API服务,API服务为什么要关心用于发布令牌的AD版本?因此,当它只关心租户ID时,为什么还要验证发行者的URL?我想了解为什么必须验证整个发行人的网址,而不仅仅是租户ID。
答案 0 :(得分:0)
在API服务中,验证器在库源文件中定义,例如Microsoft.IdentityModel.Tokens/Validators.cs
。会根据令牌验证参数(Issuer,ValidateIssuer,签名等)来验证令牌。
颁发者包含具有v1.0
和v2.0
端点的实际租户的URL。
令牌必须始终与请求它们的端点匹配,并且令牌必须始终与客户端使用该令牌调用的Web API期望的格式匹配。
为什么您需要验证发行者,因为许多服务可以生成令牌,但是您只想信任某些来源。
如果我们离开ValidateIssuer
,则中间件将不会尝试验证发行方租户,这实际上意味着您的应用程序将向具有Azure AD用户的任何人打开。
有关token validation的更多信息,请参阅文档Validateissuer和issuer