【问题标题】:Azure Apim authentication for apisapi 的 Azure Apim 身份验证
【发布时间】:2020-10-08 03:31:50
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用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的文章

    【讨论】:

    • 这里您可以为一个客户端配置。我们如何为同一个 api 管理多个客户端?
    • 您可以使用choose policy,它类似于编程语言中的 if-then-else 或 switch 构造。
    猜你喜欢
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 2017-11-12
    • 2016-08-28
    • 1970-01-01
    相关资源
    最近更新 更多