0

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

4

1 回答 1

0

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

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

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

如果我们离开ValidateIssuer,那么中间件将不会尝试验证颁发者租户,这实际上意味着您的应用程序对任何拥有 Azure AD 用户的人开放。

有关令牌验证的更多信息,请参阅文档Validateissuerissuer

于 2020-07-10T20:12:44.647 回答