api 的 Azure Apim 身份验证
Posted
技术标签:
【中文标题】api 的 Azure Apim 身份验证【英文标题】:Azure Apim authentication for apis 【发布时间】:2020-10-08 03:31:50 【问题描述】:我有一个被多个公共客户端使用的 api 端点。并且每个客户端都配置了不同的clientid。我正在使用带有 Oauth2 openid 协议的授权码流。我想介绍一个 Azure Apim 服务,并想在将请求转发到 api 之前验证 jwt 令牌。您能否告诉我如何实现这一目标?
注意:我不能使用单个客户端 ID,因为每个客户端的重定向 uri 都不同。
【问题讨论】:
【参考方案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 构造。以上是关于api 的 Azure Apim 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
Azure API 管理 - 与底层服务进行身份验证和授权同步