【问题标题】:User Authentication with IdentityServer and Azure API Management使用 IdentityServer 和 Azure API 管理进行用户身份验证
【发布时间】:2019-09-27 20:18:53
【问题描述】:

我需要一些有关 Azure API 管理服务的帮助。

目前,我们有一个 SinglePage 应用程序,它使用 Azure 上托管的两个后端服务 (WebApi .Net Core)。为了验证和授权用户,我们使用 IdentityServer(也托管在 Azure 上作为服务)+ SubscriptionService。这里 IdSrv 正在对用户进行身份验证,它还定义了 webapp 可以访问哪些 API。 SubscriptionService 包含用户是否有权访问给定 API 的信息。或多或少是这样的。

所以流程是: WebApp -> 重定向到 IdSrv 端点 -> 登录 -> 返回 UI -> 使用用户凭据(令牌)询问后端

现在,我们想要将 Azure API 管理添加到组合中,我正在努力如何做到这一点......

最初我们认为我们可以在 API 管理网关后面隐藏包括 IdentityServer 在内的所有内容,但看起来这没有意义或不可能。我发现这是一个有用的参考:Generate Access Token and validate against IdentityServer4 through Azure API Management 其中第二个答案非常重要。

基于此,我认为我需要让客户端使用 IdentityServer 进行身份验证,因为这需要 UI 交互,然后以某种方式在 API 管理中设置全局策略,以使用提到的发送请求策略授权用户。然后更改后端以接受此策略中的 JWT 令牌?我的想法正确吗?如何实施?

或者我应该只通过 API 管理传递来自客户端请求的授权标头?

所有这些东西对我来说都是新的,所以可能是我遗漏了什么或者搞砸了条款......

【问题讨论】:

    标签: azure identityserver4 asp.net-core-webapi azure-api-management


    【解决方案1】:

    您将 APIM 集成到图片中的方式可能取决于您希望使用 APIM 实现的目标。您可以将 IdSrv 隐藏在 APIM 后面,因为有客户端凭据流允许 APIM 对 API 进行身份验证/授权,或者您可以让用户通过 Auth 代码授予授权 APIM 一次,然后存储刷新令牌并使用它们与 API 对话.但我不确定这是否是最好的,因为它会改变您的系统并迫使您解决其他问题,例如如何向 APIM 验证用户身份。在某些情况下,这可能是一个好方法,由您决定。

    如果您可以让 IdSrv 面向用户,那么我们让 APIM 接收每个请求的令牌。然后,您可以在 APIM 中拥有一个全局/API 策略,该策略将从用户接收到的令牌发送到 SUbscriptionService 以检查用户授权以进行调用)可以使用发送请求策略执行此操作),然后让调用通过或拒绝。如果您想在 APIM 和后端之间使用不同的身份验证机制,这种方法最有用,因为如果 APIM 正在执行授权工作,您的后端可以避免检查任何用户访问,而只是授权 APIM 执行所有操作。

    查看此示例,了解如何使用外部服务授权请求:https://docs.microsoft.com/en-us/azure/api-management/policies/authorize-request-using-external-authorizer

    【讨论】:

      【解决方案2】:

      问这个问题已经很晚了,但我在这里描述了我们是如何做到的。我们在 APIM 上使用 SSL 认证身份验证覆盖 UI 客户端和设备客户端。简而言之:

      • UI 客户端被重定向到 ID 服务器日志页面
      • APIM 正在使用 ID 服务器进行令牌验证
      • APIM 正在 DB 中进行 SSL 认证验证,并返回类似令牌的数据,以便设备传递一些“设备帐户”信息。

      更多详情可以查看here:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-11
        • 1970-01-01
        • 2021-01-16
        • 2021-04-04
        • 2018-06-21
        • 2018-02-27
        • 2021-01-18
        • 2023-04-10
        相关资源
        最近更新 更多