B.86. KafkaClientAuthenticationOAuth 模式参考
用于:KafkaBridgeSpec
, KafkaConnectS2ISpec
, KafkaConnectSpec
, KafkaMirrorMaker2ClusterSpec
, KafkaMirrorMakerConsumerSpec
, KafkaMirrorMakerProducerSpec
要使用 OAuth 客户端身份验证,请将 type
属性设置为 oauth
值。
OAuth 身份验证可使用以下选项之一进行配置:
- 客户端 ID 和 secret
- 客户端 ID 和刷新令牌
- 访问令牌
- TLS
客户端 ID 和 secret
您可以在 tokenEndpointUri
属性中配置授权服务器的地址,以及身份验证中使用的客户端 ID 和客户端机密。OAuth 客户端将连接到 OAuth 服务器,使用客户端 ID 和机密进行身份验证,并获取它将用于与 Kafka 代理进行身份验证的访问令牌。在 clientSecret
属性中,指定一个指向包含客户端 secret 的 Secret
的链接。
使用客户端 ID 和客户端 secret 进行 OAuth 客户端身份验证示例
authentication: type: oauth tokenEndpointUri: https://sso.myproject.svc:8443/auth/realms/internal/protocol/openid-connect/token clientId: my-client-id clientSecret: secretName: my-client-oauth-secret key: client-secret
客户端 ID 和刷新令牌
您可以在 tokenEndpointUri
属性中配置 OAuth 服务器的地址,并与 OAuth 客户端 ID 和刷新令牌一起配置。OAuth 客户端将连接到 OAuth 服务器,使用客户端 ID 进行身份验证并刷新令牌,并获取它将用于与 Kafka 代理进行身份验证的访问令牌。在 refreshToken
属性中,指定包含刷新令牌的 Secret
链接。
+ .使用客户端 ID 和刷新令牌进行 OAuth 客户端身份验证示例
authentication: type: oauth tokenEndpointUri: https://sso.myproject.svc:8443/auth/realms/internal/protocol/openid-connect/token clientId: my-client-id refreshToken: secretName: my-refresh-token-secret key: refresh-token
访问令牌
您可以直接配置用于与 Kafka 代理进行身份验证的访问令牌。在本例中,您不用指定 tokenEndpointUri
。在 accessToken
属性中,指定包含访问令牌的 Secret
链接。
仅使用访问令牌进行 OAuth 客户端身份验证示例
authentication: type: oauth accessToken: secretName: my-access-token-secret key: access-token
TLS
使用 HTTPS 协议访问 OAuth 服务器不需要额外的配置,只要其使用的 TLS 证书由可信证书颁发机构签名,并且其主机名列在证书中。
如果您的 OAuth 服务器使用自签名证书,或者由不信任的证书颁发机构签名,您可以在自定义重新创建中配置可信证书列表。The tlsTrustedCertificates
属性包含一个 secret 列表,其密钥名称存储在证书的下面。证书必须以 X509 格式存储。
提供的 TLS 证书示例
authentication: type: oauth tokenEndpointUri: https://sso.myproject.svc:8443/auth/realms/internal/protocol/openid-connect/token clientId: my-client-id refreshToken: secretName: my-refresh-token-secret key: refresh-token tlsTrustedCertificates: - secretName: oauth-server-ca certificate: tls.crt
OAuth 客户端将默认验证 OAuth 服务器的主机名是否与证书主题或其它 DNS 名称匹配。如果不需要,您可以禁用主机名验证。
禁用 TLS 主机名验证示例
authentication: type: oauth tokenEndpointUri: https://sso.myproject.svc:8443/auth/realms/internal/protocol/openid-connect/token clientId: my-client-id refreshToken: secretName: my-refresh-token-secret key: refresh-token disableTlsHostnameVerification: true
type
属性是一个光盘,它区分使用 KafkaClientAuthenticationOAuth
类型与 KafkaClientAuthenticationTls
、KafkaClientAuthenticationScramSha512
、KafkaClientAuthenticationPlain
。它必须具有类型 KafkaClientAuthenticationOAuth
的值 oauth
。
属性 | 描述 |
---|---|
accessToken | 包含从授权服务器获取的访问令牌的 OpenShift Secret 链接。 |
accessTokenIsJwt |
配置是否应将访问令牌视为 JWT。如果授权服务器返回不透明令牌,这应当设为 |
布尔值 | |
clientId | Kafka 客户端 ID,可用于对 OAuth 服务器进行身份验证并使用令牌端点 URI。 |
字符串 | |
clientSecret | 含有 OAuth 客户端机密的 OpenShift Secret 链接,Kafka 客户端可以使用该机密对 OAuth 服务器进行身份验证并使用令牌端点 URI。 |
disableTlsHostnameVerification |
启用或禁用 TLS 主机名验证。默认值为 |
布尔值 | |
maxTokenExpirySeconds | 将访问令牌的寿命限制为指定的秒数。如果授权服务器返回不透明令牌,则应设置此项。 |
整数 | |
refreshToken | 包含刷新令牌的 OpenShift Secret 链接,可用于从授权服务器获取访问令牌。 |
scope |
针对授权服务器进行身份验证时使用的 OAuth 范围。些授权服务器要求进行此设置。可能的值取决于授权服务器的配置方式。默认情况下,执行令牌端点请求时不指定 |
字符串 | |
tlsTrustedCertificates | TLS 连接到 OAuth 服务器的可信证书。 |
tokenEndpointUri | 授权服务器令牌端点 URI. |
字符串 | |
type |
必须是 |
字符串 |