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