【问题标题】:Steps: WSO2 Authentication and Authorization = Many Steps步骤:WSO2 身份验证和授权 = 许多步骤
【发布时间】:2021-01-29 00:56:45
【问题描述】:

我正在尝试使用 WSO2 API Manager 为我的 API 提供安全性。我可以实现 WSO2 Identity Server 的配置,以便对一些用户使用 LDAP 服务器,并使 WSO2 API Manager 将此 Identity Server 用作密钥管理器。我的问题是:

  1. 如何配置最终用户访问 API?是否需要将所有用户与 API Manager carbon 中的应用角色相关联?
  2. 最终用户需要两个访问令牌才能访问一个 API?一个使用(OAuth 客户端密钥/OAuth 客户端密钥)在 IS 中进行身份验证,另一个使用(消费者客户端 ID/消费者客户端密钥)在 API Manager 中生成对 API 的访问令牌?
  3. 是否有任何教程解释了所有这些步骤以及如何为某些用户保护 API?

【问题讨论】:

    标签: oauth-2.0 wso2 access-token wso2-am wso2is


    【解决方案1】:

    基本上,令牌生成流程因授权类型而异。例如,您用于生成访问令牌的 jwt-bearer 授权类型有几个步骤,例如,

    1. 服务提供者向 IDP 请求 JWT
    2. 从交换 JWT 断言的 API Manager 生成访问令牌。

    这是因为每种授权类型的用途不同,使用授权类型取决于您的安全要求。

    JWT Bearer 授权通常用于客户端应用程序,其中用户登录提供用户名和密码,其余部分在应用程序本身完成,无需与最终用户进行任何交互。

    如果需要以最终用户身份生成令牌,可以使用密码授权类型。

    【讨论】:

    • 我使用了两种类型:密码和jwt-bearer。 1) - WSO2 中的请求是使用密码授予类型来生成令牌。 2) - 在 WSO2 AM 中使用 jwt-bearer 类型请求并使用第一个请求生成的访问令牌。 3) - WSO2 AM 中的请求传递由 Authorization 标头中的第二个请求生成的访问令牌。我在前面使用了一个 React 应用程序,所以我想我会链接所有这些调用以对用户透明。
    【解决方案2】:

    这些是我配置 WSO2 Identity Server 和 WSO2 Api Manager 的步骤:

    1. 我在 Identity Server 中创建了一个服务提供者并配置了一个 OAuth/OpenId 连接。这会生成 OAuth 客户端密钥和 OAuth 客户端密钥。

    2. 我在 API Manager 中创建了一个身份提供者,导入一个公共证书以验证来自身份提供者的响应,并使用 OAuth 客户端密钥作为别名,以便在验证 JWT 令牌时由 WSO2 API Manager 检查。

    3. 我在 WSO2 API Publisher 中创建了一个 API,将这个 API 关联到一个内部/订阅者角色,并将我的最终用户关联到这个角色。

    4. 我在 WSO2 API Store 中创建了一个应用程序来使用我的 Rest 服务并将我的 API 订阅到此应用程序。

    我按照这篇文章执行了以下步骤: how-to-protect-your-apis-with-self-contained-acces

    问题在于使用 Rest Service 的步骤。

    1. 在 WSO2 Identity Server 中请求生成 API Manager 的访问令牌: curl -u (OAUTH_CLIENT_KEY:OAUTH_CLIENT_SECRET) -k -d "grant_type=password&username=END_USER_USERNAME&password=END_USER_PASSWORD" -H "Content-Type:application/x-www-form-urlencoded" https://localhost:9443/oauth2/token

    2. 在 API Manager 中请求生成 API 的访问令牌。 curl -i -X POST -u (CONSUMER_KEY:CONSUMER_SECRET) -k -d 'grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=IS_ACCESS_TOKEN' -H 'Content-Type: application/x-www -form-urlencoded' https://localhost:9444/oauth2/token

    3. 向 API Manager 请求从 API 获取资源: curl -v -H "授权:承载 AM_ACCESS_TOKEN" http://172.19.0.1:8281/jwt/1.0.0/REST_API

    有什么简单的方法可以完成这些步骤吗?

    【讨论】:

      【解决方案3】:

      有关使用角色、范围和令牌保护 API 的更多信息,请参阅文档中的 API 安全部分。

      This doc 包含有关如何根据您的要求使用 APIM 和 IS 的不同授权类型的信息。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-28
      • 2020-01-10
      • 2014-01-26
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多