第 83 章 KafkaClientAuthenticationOAuth 模式参考
used in: KafkaBridgeSpec, KafkaConnectSpec, KafkaMirrorMaker2ClusterSpec, KafkaMirrorMakerConsumerSpec, KafkaMirrorMakerProducerSpec
KafkaClientAuthenticationOAuth 模式属性的完整列表
要配置 OAuth 客户端身份验证,请将 type 属性设置为 oauth。
可以使用以下选项之一配置 OAuth 身份验证:
- 客户端 ID 和 secret
- 客户端 ID 和刷新令牌
- 访问令牌
- 用户名和密码
- TLS
客户端 ID 和 secret
您可以在 tokenEndpointUri 属性中配置授权服务器的地址,以及身份验证中使用的客户端 ID 和客户端 secret。OAuth 客户端将连接到 OAuth 服务器,使用客户端 ID 和 secret 进行身份验证,并获取用于与 Kafka 代理进行身份验证的访问令牌。在 clientSecret 属性中,指定到包含客户端 secret 的 Secret 的链接。
客户端 ID 和客户端 secret 配置示例
authentication:
type: oauth
tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint>
clientId: my-client-id
clientSecret:
secretName: my-client-oauth-secret
key: client-secret
如果需要,可以指定 scope 今儿 audience。
客户端 ID 和刷新令牌
您可以在 tokenEndpointUri 属性中配置 OAuth 服务器的地址,以及 OAuth 客户端 ID 和刷新令牌。OAuth 客户端将连接到 OAuth 服务器,使用客户端 ID 进行身份验证并刷新令牌,并获取用于与 Kafka 代理进行身份验证的访问令牌。在 refreshToken 属性中,指定到包含刷新令牌的 Secret 的链接。
客户端 ID 和刷新令牌配置示例
authentication:
type: oauth
tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint>
clientId: my-client-id
refreshToken:
secretName: my-refresh-token-secret
key: refresh-token
访问令牌
您可以配置用于直接与 Kafka 代理进行身份验证的访问令牌。在这种情况下,您没有指定 tokenEndpointUri。在 accessToken 属性中,指定到包含访问令牌的 Secret 的链接。或者,使用 accessTokenLocation 属性,并指定令牌文件的路径。
仅访问令牌配置示例
authentication:
type: oauth
accessToken:
secretName: my-access-token-secret
key: access-token
指定挂载的文件的访问令牌配置示例
authentication:
type: oauth
accessTokenLocation: `/var/run/secrets/kubernetes.io/serviceaccount/token`
用户名和密码
OAuth 用户名和密码配置使用 OAuth Resource Owner Password Grant 机制。机制已弃用,且只支持在无法使用客户端凭证(ID 和 secret)的环境中启用集成。如果您的访问管理系统不支持其他方法或用户帐户进行身份验证,您可能需要使用用户帐户。
典型的方法是在您的授权服务器中创建一个代表您的客户端应用程序的特殊用户帐户。然后,为帐户提供随机生成的密码,并且有非常有限的权限集。例如,帐户只能连接到您的 Kafka 集群,但不允许使用任何其他服务或登录到用户界面。
考虑首先使用刷新令牌机制。
您可以在 tokenEndpointUri 属性中配置授权服务器的地址,以及客户端 ID、用户名以及身份验证中使用的密码。OAuth 客户端将连接到 OAuth 服务器,使用用户名、密码、客户端 ID 进行验证,甚至客户端 secret 来获取它将用来与 Kafka 代理进行身份验证的访问令牌。
在 passwordSecret 属性中,指定到包含密码的 Secret 的链接。
通常,您还必须使用公共 OAuth 客户端配置 clientId。如果使用机密 OAuth 客户端,还必须配置 clientSecret。
使用公共客户端的用户名和密码配置示例
authentication:
type: oauth
tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint>
username: my-username
passwordSecret:
secretName: my-password-secret-name
password: my-password-field-name
clientId: my-public-client-id
使用机密客户端的用户名和密码配置示例
authentication:
type: oauth
tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint>
username: my-username
passwordSecret:
secretName: my-password-secret-name
password: my-password-field-name
clientId: my-confidential-client-id
clientSecret:
secretName: my-confidential-client-oauth-secret
key: client-secret
如果需要,可以指定 scope 今儿 audience。
TLS
使用 HTTPS 协议访问 OAuth 服务器不需要任何其他配置,只要它使用的 TLS 证书由可信证书颁发机构签名,并且其主机名列在证书中。
如果您的 OAuth 服务器使用自签名证书或由不信任的证书颁发机构签名的证书,请使用 tlsTrustedCertificates 属性来指定包含它们的 secret。证书必须采用 X.509 格式。
指定 TLS 证书的配置示例
authentication:
type: oauth
tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint>
clientId: my-client-id
refreshToken:
secretName: my-refresh-token-secret
key: refresh-token
tlsTrustedCertificates:
- secretName: oauth-server-ca
pattern: "*.crt"
OAuth 客户端默认将验证 OAuth 服务器的主机名是否与证书主题或其中一个替代 DNS 名称匹配。如果不需要,您可以禁用主机名验证。
禁用 TLS 主机名验证配置示例
authentication:
type: oauth
tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint>
clientId: my-client-id
refreshToken:
secretName: my-refresh-token-secret
key: refresh-token
disableTlsHostnameVerification: true
83.1. KafkaClientAuthenticationOAuth 模式属性 复制链接链接已复制到粘贴板!
type 属性是一个差异性程序,它区分来自 KafkaClientAuthenticationTls, KafkaClientAuthenticationScramSha256, KafkaClientAuthenticationScramSha512, KafkaClientAuthenticationPlain 的 KafkaClientAuthenticationOAuth 类型。对于类型 KafkaClientAuthenticationOAuth,它需要是值 oauth。
| 属性 | 属性类型 | 描述 |
|---|---|---|
| type | string |
必须是 |
| clientId | string | Kafka 客户端 ID,用于向 OAuth 服务器进行身份验证并使用令牌端点 URI。 |
| username | string | 用于身份验证的用户名。 |
| scope | string |
对授权服务器进行身份验证时要使用的 OAuth 范围。有些授权服务器需要此设置。可能的值取决于授权服务器的配置方式。在执行令牌端点请求时,不指定 |
| 受众 | string |
对授权服务器进行身份验证时使用的 OAuth 受众。有些授权服务器需要明确设置 audience。可能的值取决于授权服务器的配置方式。默认情况下,在执行令牌端点请求时,不会指定 |
| tokenEndpointUri | string | 授权服务器令牌端点 URI。 |
| connectTimeoutSeconds | 整数 | 连接到授权服务器时的连接超时(以秒为单位)。如果没有设置,则有效的连接超时为 60 秒。 |
| readTimeoutSeconds | 整数 | 连接到授权服务器时读取超时(以秒为单位)。如果没有设置,则有效读取超时为 60 秒。 |
| httpRetries | 整数 | 初始 HTTP 请求失败时尝试的最大重试次数。如果没有设置,则默认为不尝试任何重试。 |
| httpRetryPauseMs | 整数 | 重试失败的 HTTP 请求前需要暂停。如果没有设置,则默认为根本不暂停,而是立即重复请求。 |
| clientSecret | 链接到包含 Kafka 客户端 secret 的 OpenShift Secret,用于向 OAuth 服务器进行身份验证并使用令牌端点 URI。 | |
| passwordSecret |
对包含密码的 | |
| accessToken | 指向包含从授权服务器获取的访问令牌的 OpenShift Secret。 | |
| refreshToken | 连接到包含刷新令牌的 OpenShift Secret,可用于从授权服务器获取访问令牌。 | |
| tlsTrustedCertificates | 用于 TLS 连接到 OAuth 服务器的可信证书。 | |
| disableTlsHostnameVerification | 布尔值 |
启用或禁用 TLS 主机名验证。默认值为 |
| maxTokenExpirySeconds | 整数 | 将访问令牌的生存时间设置为指定秒数。如果授权服务器返回不透明令牌,则应设置此项。 |
| accessTokenIsJwt | 布尔值 |
配置访问令牌是否应被视为 JWT。如果授权服务器返回不透明令牌,则这应设为 |
| enableMetrics | 布尔值 |
启用或禁用 OAuth 指标。默认值为 |
| includeAcceptHeader | 布尔值 |
Accept 标头是否应该在请求中设置到授权服务器。默认值为 |
| accessTokenLocation | string | 包含用于身份验证的访问令牌的令牌文件的路径。 |
| clientAssertion | 链接到包含为客户端手动配置的客户端断言的 OpenShift secret。 | |
| clientAssertionLocation | string | 包含用于身份验证的客户端断言的文件路径。 |
| clientAssertionType | string |
客户端断言类型。如果没有设置,并且配置了 |
| saslExtensions | map | SASL 扩展参数. |