微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

APIM 是否将相同的不记名令牌转发到后端 API? | OAuth 2.0 和 Azure AAD

如何解决APIM 是否将相同的不记名令牌转发到后端 API? | OAuth 2.0 和 Azure AAD

根据 Microsoft 提供的以下文档,我注册了这两个应用程序,使用客户端凭据设置 OAuth 2.0 服务并添加了“validate-jwt”入站策略。我已经用邮递员生成不记名令牌并在带有令牌的 APIM 实例下调用我的后端 API 对其进行了测试。它工作正常。

https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-protect-backend-with-aad

但与 Apim 一起,我还想保护我的后端 API,并将相同的令牌传递给后端 API。所以我在这里有一些问题 -

  • APIM 是否会自动将相同的不记名令牌转发到后端 API,还是我们需要为其配置任何策略?
  • 如果是,我如何检查跟踪日志?另外,如何在后端 API 代码中授权相同的令牌?

这是我的“validate-jwt”政策 -

<inbound>
    <validate-jwt header-name="Authorization" Failed-validation-httpcode="401" Failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
        <openid-config url="https://login.microsoftonline.com/{AAD Tenant ID}/v2.0/.well-kNown/openid-configuration" />
        <audiences>
            <audience>{App Id of backend App}</audience>
        </audiences>
    </validate-jwt>
    <base />
</inbound>

请帮忙。

解决方法

对于您的第一个问题:

根据我身边的一些测试,APIM似乎可以自动将相同的承载令牌转发到后端api,而无需添加任何策略。

我在 APIM 中创建了一个 api 来在后端调用 microsoft graph api(list users)。测试运行APIM api,它显示“401 Unauthorized”错误。然后我测试在 APIM api 的标头中提供不记名令牌,如下图所示: enter image description here

它运行成功并响应用户列表。这样Bearer token就可以自动转发到后端api了。

对于你的第二个问题:

如果你想为后端 api 跟踪日志,我认为你可以在你的 api 的后端代码中进行。

要验证后端 api 中的令牌,您可以解码后端 api 代码中的 jwt 令牌,然后检查令牌中 claim 的值(下面我提供了一个示例来解码 jwt 令牌并获取 {{1 }} 声明)

iss

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。