首页 > 解决方案 > 如何在 API 管理上验证 MSAL 令牌?

问题描述

我有一个使用 ADAL 进行身份验证的桌面应用程序,该应用程序向 API Management azure 服务上的 API 发出请求。迁移代码以使用 MSAL 后,API 管理返回 401,表示我的令牌无效。我看到监视请求的唯一区别是 ADAL 向此端点/tenantID/oauth2/token和 MSAL发出请求/tenantID/oauth2/v2.0/token

在我的 API 管理中,我有这个政策:

    <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid. AAD" require-expiration-time="false">
         <openid-config url="https://login.microsoftonline.com/tenantID/.well-known/openid-configuration" />
    </validate-jwt>

我试图将众所周知的 url 更改为 v2.0 端点,但得到了同样的错误。如何使用 MSAL 验证令牌?

标签: c#azure-api-managementmsal

解决方案


文档中的注释中,将众所周知的 url 更改为 v2.0 时,您可能需要使用而不是.commontenantID

<openid-config url="https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration" />

另外,请确保您已正确完成此链接中的第 10 步:

如果您使用 v2 端点,请使用您在默认范围字段中为后端应用程序创建的范围。此外,请确保在您的 应用程序清单中将 accessTokenAcceptedVersion属性的值设置为。2


推荐阅读