我有一个后端API,想要通过使用Azure API管理器进行代理。
这个后端API需要我提供Bearer Oauth2令牌。
我想使用Azure APIM来处理Oauth2流程,并公开一个非常简单的API,供客户端应用程序使用。 我想避免我的客户端应用程序使用Oauth2。
如何在APIM中处理它? 我发现了很多示例,演示如何使用Oauth2保护后端API,但这不是我要实现的用例。
谢谢。
这里有一个使其运作的策略片段:
<send-request ignore-error="true" timeout="20" response-variable-name="bearerToken" mode="new">
<set-url>{{authorizationServer}}</set-url>
<set-method>POST</set-method>
<set-header name="Content-Type" exists-action="override">
<value>application/x-www-form-urlencoded</value>
</set-header>
<set-body>
@{
return "client_id={{clientId}}&resource={{scope}}&client_secret={{clientSecret}}&grant_type=client_credentials";
}
</set-body>
</send-request>
<set-header name="Authorization" exists-action="override">
<value>
@("Bearer " + (String)((IResponse)context.Variables["bearerToken"]).Body.As<JObject>()["access_token"])
</value>
</set-header>
<!-- We do not want to expose our APIM subscription key to the backend API -->
<set-header exists-action="delete" name="Ocp-Apim-Subscription-Key"/>
这些资源提供了有关如何将 Azure AD OAuth2 bearer token 添加到请求中以保护 API 的详细信息。