12.7. 3scale 与 OpenID Connect 身份提供程序集成示例
本例演示了在 3scale 与 Red Hat Single Sign-On(RH-SSO)集成时的流程作为 OpenID Connect 身份提供程序。这个示例有以下特征:
- 在 Admin Portal 中,API 供应商定义了一个 3scale API 产品,并将该产品配置为使用 RH-SSO 作为 OpenID Connect 身份提供程序。
这个产品的 OpenID Connect 配置包括:
-
公共基本 URL
:https://api.example.com
-
私有基本 URL
:https://internal-api.example.com
-
OpenID Connect Issuer:
https://zync:/auth/realms/myrealm
- 选择 授权代码流 (即标准流)。
-
公共基本 URL
在 3scale Developer Portal 中,有以下特征:此应用程序是 API 消费者订阅访问 Developer 门户中特定应用程序计划提供的 3scale API 产品的结果。
-
客户端 ID :
myclientid
-
客户端 Secret :
myclientsecret
-
重定向 URL:
https://myapp.example.com
-
客户端 ID :
在 RH-SSO 中,在
myrealm
域中,有具有以下特征的客户端:-
客户端 ID :
myclientid
-
客户端 Secret :
myclientsecret
-
重定向 URL:
https://myapp.example.com
-
客户端 ID :
myrealm
realm 具有这个用户:-
Username:
myuser
-
Password:
mypassword
-
Username:
-
myrealm
中的 3scale Zync 客户端具有正确的 服务帐户 角色
流程如下:
最终用户(API consumer)将在以下端点上向身份验证服务器(RH-SSO)发送授权请求:
https://idp.example.com/auth/realms/myrealm/protocol/openid-connect/auth
在请求中,应用程序提供这些参数:
-
客户端 ID:
myclientid
-
重定向 URL
:https://myapp.example.com
-
客户端 ID:
- 应用将 end-user 重定向到 RH-SSO 登录窗口。
end-user 用户使用这些凭证登录到 RH-SSO:
-
Username:
myuser
-
Password:
mypassword
-
Username:
- 根据配置,以及是否首次在此特定应用验证最终用户时,可能会显示同意窗口。
- RH-SSO 为最终用户发出授权代码。
API 消费者应用使用以下端点来发送请求,以交换 JWT 的授权代码:
https://idp.example.com/auth/realms/myrealm/protocol/openid-connect/token
请求包含授权代码和这些参数:
-
客户端 ID:
myclientid
-
客户端 secret:
myclientsecret
-
重定向 URL
:https://myapp.example.com.
-
客户端 ID:
-
RH-SSO 返回带有 access_token 字段的 JSON Web Token(JWT),如
eyJhbGciOiJSUzI1NiIsInR5cCIgOiSldUIiwia2lk…xBArNhqF-A
。 API 消费者应用程序向
https://api.example.com
发送一个 API 请求,其中包含以下标头:Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lk…xBArNhqF-A.
-
该应用应该会收到来自
https://internal-api.example.com
的成功响应。