用于API的Azure Apim身份验证

时间:2020-06-18 06:39:54

标签: azure azure-api-management api-gateway

我有一个由多个公共客户端使用的api端点。并且每个客户端都配置有不同的客户端ID。我正在使用带有Oauth2 openid协议的授权码流。我想介绍一个Azure Apim服务,并想在将请求转发到api之前验证jwt令牌。您能否让我知道我该如何实现?

注意:我不能使用单个客户端ID,因为每个客户端的重定向uri都不相同。

1 个答案:

答案 0 :(得分:0)

您可以通过验证每个传入请求的访问令牌,使用Validate JWT策略在API管理中对请求进行预授权。如果请求没有有效的令牌,API管理将阻止它。例如,将以下策略添加到Echo API的<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}/.well-known/openid-configuration" />
    <required-claims>
        <claim name="aud">
            <value>{Application ID of backend-app}</value>
        </claim>
    </required-claims>
</validate-jwt>

有关更多详细信息,您可以参考有关Configure a JWT validation policy to pre-authorize requests的文章