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