第 12 章 OpenID Connect 集成

3scale 与第三方身份提供程序(IdP)集成,用于使用 OpenID Connect 规格验证 API 请求,包括以下功能:

集成由以下两个部分组成:

红帽 3scale API 管理完全支持两个集成点作为 OpenID 提供程序 的红帽单点登录( RH-SSO)。请参阅 支持的 Configurations 页面中的 RH-SSO 版本。APIcast 集成也通过 ForgeRock 进行测试。

在这两种情况下,您可以使用 OpenID Connect 身份验证选项在服务的 Integration 页面上指定 OpenID Connect Issuer 字段来配置集成。具体步骤请查看 配置红帽单点登录集成

12.1. APIcast 验证和解析 JWT

使用 OpenID Connect 身份验证模式对服务的 API 请求应当通过 Bearer 模式在 Authorization 标头中以 JWT 格式提供访问令牌。标头应类似以下示例:

Authorization: Bearer <JWK>

例如:

Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcC5leGFtcGxlLmNvbSIsInN1YiI6ImFiYzEyMyIsIm5iZiI6MTUzNzg5MjQ5NCwiZXhwIjoxNTM3ODk2MDk0LCJpYXQiOjE1Mzc4OTI0OTQsImp0aSI6ImlkMTIzNDU2IiwidHlwIjoiQmVhcmVyIn0.LM2PSmQ0k8mR7eDS_Z8iRdGta-Ea-pJRrf4C6bAiKz-Nzhxpm7fF7oV3BOipFmimwkQ_-mw3kN--oOc3vU1RE4FTCQGbzO1SAWHOZqG5ZUx5ugaASY-hUHIohy6PC7dQl0e2NlAeqqg4MuZtEwrpESJW-VnGdljrAS0HsXzd6nENM0Z_ofo4ZdTKvIKsk2KrdyVBOcjgVjYongtppR0cw30FwnpqfeCkuATeINN5OKHXOibRA24pQyIF1s81nnmxLnjnVbu24SFE34aMGRXYzs4icMI8sK65eKxbvwV3PIG3mM0C4ilZPO26doP0YrLfVwFcqEirmENUAcHXz7NuvA

JWT 令牌包含一个签名,令牌的接收方可以验证和确保令牌由已知签发者签名,并且其内容尚未更改。3scale 支持基于公钥/私钥对的 RSA 签名。此处,签发者使用私钥签署 JWT 令牌。APIcast 会使用公钥验证此令牌。

APIcast 使用 OpenID Connect Discovery 获取可用于验证 JWT 签名的 JSON Web 密钥(JWK)。

在每个请求中,APIcast 会执行以下操作:

  1. 使用公钥验证 JWT 令牌。
  2. 验证声明 nbfexp
  3. 验证声明中指定的签发者 ( Issuer)是否与 OpenID Connect Issuer 字段中配置的相同。
  4. 提取 azp 或 a ud 声明的值,并将其用作客户端 ID,以标识 3scale 中的应用程序,以通过 Service Management API 授权调用。

如果有任何 JWT 验证或授权检查失败,APIcast 会返回 "Authenication failed" 错误。否则,APIcast 将请求代理到 API 后端。Authorization 标头保留在请求中,因此 API 后端可以使用 JWT 令牌来检查用户和客户端身份。