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
收到成功的响应。