【问题标题】:Generate Access Token and validate against IdentityServer4 through Azure API Management通过 Azure API 管理生成访问令牌并针对 IdentityServer4 进行验证
【发布时间】:2019-01-09 11:48:58
【问题描述】:

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

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

有没有一种方法可以从 Azure API 管理获取所需的访问令牌,以针对 IdentityServer4 进行验证并将其附加到后端 API 请求中的标头?

【问题讨论】:

    标签: api oauth-2.0 access-token identityserver4 azure-api-management


    【解决方案1】:

    是的,可以通过自定义策略来实现。您可以要求您的外部 API-Client/Consumer 在 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

    【讨论】:

      【解决方案2】:

      Postman 可以让人类用户看到 UI 并授权 API 访问和 IdentityServer4 为 Postman 颁发令牌。 APIM 服务器处理调用时没有这种奢侈,因为您可以向 IdentityServer4 发送令牌请求,但会向谁提供 UI 以授权该操作?

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

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

      【讨论】:

      • 最后一行对我来说最有意义。消费应用程序(客户端)不应该首先进行身份验证并需要访问令牌来调用 APIM 公开的端点吗?然后 APIM 应该验证令牌并调用后端 api
      • 这确实是最常见的情况。尽管其他可能包括需要将身份验证分离到 APIM 和后端。在这种情况下,需要通过来自用户的令牌以外的方式来验证 APIM。
      猜你喜欢
      • 2018-01-21
      • 2021-10-04
      • 1970-01-01
      • 2017-05-14
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 2019-07-16
      相关资源
      最近更新 更多