12.7. 集成示例

3scale 中的服务 API 被配置为使用 OpenID Connect 身份验证。服务 API 上的 公共基本 URL 配置为 https://api.example.com专用基本 URL 配置为 https://internal-api.example.com

OpenID Connect Issuer 字段在 API 集成中被设置为 https://zync:/auth/realms/myrealm,而 realm myrealm 中的客户端 zync 具有正确的服务帐户角色。

3scale 中有一个具有 myclientid 客户端 ID、myclientsecret 客户端 secret 和 https://myapp.example.com 重定向 URL 的应用。

在 RH-SSO 域中,myrealm 域中也存在具有这些值的客户端:

  • 客户端 ID: myclientid
  • Secret: myclientsecret
  • 有效的 Redirect URIs:https://myapp.example.com

对于这个客户端,启用标准流。myrealm 域中配置了具有 myuser 用户名和 mypassword 密码的用户。

流程如下:

  1. 使用端点 https://idp.example.com/auth/realms/myrealm/protocol/openid-connect/auth,应用向 RH-SSO 发送授权请求。在请求中,应用程序提供了这些参数: myclientid 客户端 ID 和 https://myapp.example.com 重定向 URL。
  2. RH-SSO 显示登录窗口,其中用户必须提供用户的凭据:Username myuser 和密码 mypassword
  3. 根据配置,如果这是用户首次在此特定应用中进行身份验证,则将显示同意窗口。
  4. 用户进行身份验证后,应用会使用端点 https://idp.example.com/auth/realms/myrealm/protocol/openid-connect/token 向 RH-SSO 发送令牌请求,并提供客户端 ID myclientid、客户端 secret myclientsecret 和 Redirect URL https://myapp.example.com
  5. RH-SSO 返回带有 "access_token" 字段 eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lk…​xBArqF-A 的 JSON。
  6. 应用程序向 https://api.example.com 发送 API 请求到带有标头 Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lk…​xBArqF-A
  7. 应用程序应该从 https://internal-api.example.com 收到成功的响应。