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