我们目前的情况是:
- 在Azure API管理器中,我们基于Swagger定义构建一些API。
- API提供商向我们提供了客户端ID和密码。
- 其中一些API调用需要使用承载令牌进行身份验证,该令牌是在提供商的API基础设施上使用上面提到的/Token端点生成的,我们希望在APIM中集成这些API调用的身份验证流(因为前端将以另一种方式进行身份验证(可能是CORS))
- 我们尝试了各种方法,使用了APIM设置中“OAuth2.0”服务配置的各种变体,并将它们应用到我们不断获得未经授权的401的API定义中。
作为起点,我们使用了https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-protect-backend-with-aad,但我们发现的大多数解释都与使用AD有关,据我们所知,我们不需要使用AD。
我们尝试将以下OAuth 2.0 Postman 授权配置实现到APIM中(它实际上在Postman中工作)。
有没有一种简单直接的方法来告诉APIM使用给定的ClientID和密码调用令牌URL,并将带有承载令牌的授权头添加到后端API中?
2条答案
按热度按时间xeufq47z1#
感谢Gary为我指明了正确的方向。我对这个主题还很陌生,所以我的方法可能远不是完美的,但它是有效的。
最后,我修改了API调用的入站策略,并添加了以下内容(将xxxx替换为适当的设置)
简短说明
1.发起一个新的请求,该响应将存储在变量(令牌状态)中
1.由于令牌请求的响应(存储在tokenState中)是JSON格式的,因此请求的响应被强制转换为JObject,而“Access_Token”存储在“bearerToken”变量中(或者,您也可以不赋值该变量,并将该行立即放入下一步。
1.设置AutorizationHeader,取值为“Beeller”+[BearerToken]
我需要能够调试的附加步骤(设置头部Content-Type和Accept),但在正常情况下,它们将由API的请求客户端添加。
rqdpfwrv2#
是的-您可以做到这一点,下面是一个遵循类似过程的安全资源:
您的案例略有不同,但使用了相同的构建块。您只需调整OAuth消息以使用客户端凭据流。