第 12 章 OpenID Connect 集成
3scale 与第三方身份提供程序(IdP)集成,用于使用 OpenID Connect 规格验证 API 请求,包括以下功能:
- OpenID Connect 基于 OAuth 2.0 基础上构建,通过身份验证机制补充 OAuth 2.0 授权框架。
- 使用 OpenID Connect 身份验证 选项时,API 请求使用 JSON Web Token(JWT)格式(RFC 7519)格式的访问令牌进行身份验证。
集成由以下两个部分组成:
红帽 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 会执行以下操作:
如果有任何 JWT 验证或授权检查失败,APIcast 会返回 "Authenication failed" 错误。否则,APIcast 将请求代理到 API 后端。Authorization
标头保留在请求中,因此 API 后端可以使用 JWT 令牌来检查用户和客户端身份。