我有一个外部端点,该端点将访问Azure API网关,并将其路由到受IdentityServer4授权保护的后端API。
如果我通过Postman客户端使用IdentityServer的交互式UI击中访问令牌,我将获得访问令牌。
是否可以从Azure API管理中获取所需的访问令牌,以针对IdentityServer4进行验证并将其附加到后端API的请求的标头中?
答案 0 :(得分:0)
Postman有很多人类用户,他们可以看到UI并授权API访问权限,并且IdentityServer4可以为Postman发行令牌。当APIM服务器正在处理呼叫时,没有什么奢侈的了,因为您可以向IdentityServer4发送令牌请求,但是会向谁显示UI来授权操作?
唯一的方法是向APIM提供某种机密(报头,查询,证书),IdentityServer4可以识别该机密,以允许它为APIM发行令牌。如果可以使用此类安全密钥,则可以使用发送请求策略来调用IdentityServer4并获取所需的令牌。
或者确保对APIM的每个请求都已经有一个令牌。
答案 1 :(得分:0)
是的,可以通过自定义策略来实现。您可以要求外部API客户端/消费者在heaser中暂停凭据,然后在入站内部编写一个策略以读取这些用户凭据并发出API请求(类似于邮递员)并获取访问令牌。然后,您可以附加相同的令牌,并让您的请求转发到后端API。
根据您的问题陈述,这应该可以工作。否则,您可能需要用更多描述/步骤来解释您的情况。
以下是一些参考资料,希望对您有所帮助。
https://docs.microsoft.com/en-us/azure/api-management/api-management-advanced-policies#SendRequest
https://docs.microsoft.com/en-us/azure/api-management/api-management-sample-send-request