12.7. 3scale API 管理与 OpenID Connect 身份提供程序集成的示例


本例演示了当您将 Red Hat 3scale API Management 与 Red Hat Single Sign-On 集成为 OpenID Connect 身份提供程序时的流程。这个示例有以下特征:

  • 在管理门户中,API 供应商定义了一个 3scale API 产品,并将该产品配置为使用 Red Hat Single Sign-On 作为 OpenID Connect 身份提供程序。
  • 这个产品的 OpenID Connect 配置包括:

    • 公共基本 URL:https://api.example.com
    • 私有基本 URL:https://internal-api.example.com
    • OpenID Connect Issuer: https://zync:41dbb98b-e4e9-4a89-84a3-91d1d19c4207@idp.example.com/auth/realms/myrealm
    • 选择 授权代码流 (即标准流)。
  • 在 3scale Developer Portal 中,有以下特征:此应用程序是 API 消费者订阅访问 Developer 门户中特定应用程序计划提供的 3scale API 产品的结果。

    • 客户端 IDmyclientid
    • 客户端 Secretmyclientsecret
    • 重定向 URL:https://myapp.example.com
  • 在 Red Hat Single Sign-On 中,在 myrealm 域中,有具有以下特征的客户端:

    • 客户端 IDmyclientid
    • 客户端 Secretmyclientsecret
    • 重定向 URL:https://myapp.example.com
  • myrealm realm 具有这个用户:

    • 用户名:myuser
    • 密码:mypassword
  • myrealm 中的 3scale Zync 客户端具有正确的 服务帐户 角色。

流程如下:

  1. 最终用户(API consumer)在以下端点上向身份验证服务器发送授权请求(本例中为 Red Hat Single Sign-On):

    https://idp.example.com/auth/realms/myrealm/protocol/openid-connect/auth

    在请求中,应用程序提供这些参数:

    • 客户端 ID:myclientid
    • 重定向 URL: https://myapp.example.com
  2. 应用将 end-user 重定向到 Red Hat Single Sign-On 登录窗口。
  3. 最终用户使用这些凭证登录到 Red Hat Single Sign-On:

    • 用户名:myuser
    • 密码:mypassword
  4. 根据配置,以及是否首次在此特定应用验证最终用户时,可能会显示同意窗口。
  5. Red Hat Single Sign-On 向最终用户发出授权代码。
  6. API 消费者应用使用以下端点来发送请求,以交换 JWT 的授权代码:

    https://idp.example.com/auth/realms/myrealm/protocol/openid-connect/token

    请求包含授权代码和这些参数:

    • 客户端 ID:myclientid
    • 客户端 secret:myclientsecret
    • 重定向 URL: https://myapp.example.com.
  7. Red Hat Single Sign-On 返回带有 access_token 字段的 JSON Web Token (JWT),如 eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lk…​xBArNhqF-A
  8. API 消费者应用程序向 https://api.example.com 发送一个 API 请求,其中包含以下标头:

    Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lk…​xBArNhqF-A.
  9. 该应用应该会收到来自 https://internal-api.example.com 的成功响应。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.