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
属性 感到困惑。
如果我正确理解文档,validateIssuer
和 issuer
配置需要一起使用。 issuer
是一个 URL,其中包含租户 ID 和用于颁发令牌的 AD 版本(1 或 2)。
作为验证令牌的 API 服务,为什么 API 服务会关心用于颁发令牌的 AD 版本?因此,当它应该只关心租户 ID 时,为什么要验证发行者 url?我试图理解为什么必须验证整个发行人 url 而不仅仅是租户 ID。
在 API 服务中,验证器在库源文件中定义,如 Microsoft.IdentityModel.Tokens/Validators.cs
。它根据令牌验证参数(Issuer、ValidateIssuer、签名等)验证令牌。
颁发者包含具有 v1.0
和 v2.0
端点的实际租户的 URL。
令牌始终需要与请求它们的端点相匹配,并且令牌始终与 Web 期望的格式相匹配 API 您的客户端将使用该令牌进行调用。
为什么您需要验证颁发者,因为许多服务都可以生成令牌,但您只想信任某些来源。
如果我们离开 ValidateIssuer
,那么中间件将不会尝试验证颁发者租户,这实际上意味着您的应用程序对任何在 Azure AD 中拥有用户的人开放。
有关token validation please refer the documents Validateissuer and 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
属性 感到困惑。
如果我正确理解文档,validateIssuer
和 issuer
配置需要一起使用。 issuer
是一个 URL,其中包含租户 ID 和用于颁发令牌的 AD 版本(1 或 2)。
作为验证令牌的 API 服务,为什么 API 服务会关心用于颁发令牌的 AD 版本?因此,当它应该只关心租户 ID 时,为什么要验证发行者 url?我试图理解为什么必须验证整个发行人 url 而不仅仅是租户 ID。
在 API 服务中,验证器在库源文件中定义,如 Microsoft.IdentityModel.Tokens/Validators.cs
。它根据令牌验证参数(Issuer、ValidateIssuer、签名等)验证令牌。
颁发者包含具有 v1.0
和 v2.0
端点的实际租户的 URL。
令牌始终需要与请求它们的端点相匹配,并且令牌始终与 Web 期望的格式相匹配 API 您的客户端将使用该令牌进行调用。
为什么您需要验证颁发者,因为许多服务都可以生成令牌,但您只想信任某些来源。
如果我们离开 ValidateIssuer
,那么中间件将不会尝试验证颁发者租户,这实际上意味着您的应用程序对任何在 Azure AD 中拥有用户的人开放。
有关token validation please refer the documents Validateissuer and issuer
的更多信息