通过Azure API管理生成访问令牌并根据IdentityServer 4进行验证

通过Azure API管理生成访问令牌并根据IdentityServer 4进行验证,api,oauth-2.0,access-token,identityserver4,azure-api-management,Api,Oauth 2.0,Access Token,Identityserver4,Azure Api Management,我有一个外部端点,它将访问Azure API网关,并将其路由到受IdentityServer 4授权保护的后端API 如果我使用IdentityServer的交互式UI通过Postman客户端点击访问令牌,我将获得访问令牌 有没有办法从Azure API管理中获取所需的访问令牌,以便根据IdentityServer 4进行验证,并将其附加到后端API请求中的头中?Postman有一种特权,即人类用户可以看到UI并授权API访问和IdentityServer 4为Postman颁发令牌。当APIM

我有一个外部端点,它将访问Azure API网关,并将其路由到受IdentityServer 4授权保护的后端API

如果我使用IdentityServer的交互式UI通过Postman客户端点击访问令牌,我将获得访问令牌


有没有办法从Azure API管理中获取所需的访问令牌,以便根据IdentityServer 4进行验证,并将其附加到后端API请求中的头中?

Postman有一种特权,即人类用户可以看到UI并授权API访问和IdentityServer 4为Postman颁发令牌。当APIM服务器处理调用时,并没有这样的奢侈,因为您可以向IdentityServer4发送令牌请求,但会向谁显示UI来授权该操作

唯一的方法是为APIM(头、查询、证书)提供某种可以被IdentityServer4识别的机密,以允许它为APIM颁发令牌。如果这种secred可用,您可以使用发送请求策略调用IdentityServer4并获取所需的令牌


或者确保每个对APIM的请求都已经有一个令牌。

是的,可以通过自定义策略来实现。您可以要求外部API客户端/消费者在heaser中的凭据中使用paas,然后在inbound中编写一个策略,以读取这些用户凭据并执行API请求(类似于您的邮递员)并获取访问令牌。然后,您可以附加相同的令牌,并让您的请求被转发到后端API

根据你的问题陈述,这应该是可行的。如果不是这样,您可能需要用更多的描述/步骤来解释您的场景

这里有一些参考资料,希望对你有所帮助


最后一行对我来说最有意义。消费应用程序(客户端)不应该先进行身份验证,然后需要访问令牌来调用APIM公开的端点吗?然后,APIM应该验证令牌并调用后端APIM。这确实是最常见的场景。尽管其他的可能包括需要对APIM和后端进行单独的身份验证。在这种情况下,需要通过来自用户的令牌以外的方式对APIM进行身份验证。