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

Azure AD token validation - why validate issuer?

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

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

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

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

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

有关token validation please refer the documents Validateissuer and issuer

的更多信息