第 76 章 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 的 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
Copy to Clipboard Toggle word wrap

如果需要,可以指定 scope 今儿 audience

客户端 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
Copy to Clipboard Toggle word wrap

访问令牌

您可以配置用于直接与 Kafka 代理进行身份验证的访问令牌。在这种情况下,您没有指定 tokenEndpointUri。在 accessToken 属性中,指定到包含访问令牌的 Secret 的链接。

仅使用访问令牌的 OAuth 客户端身份验证示例

authentication:
  type: oauth
  accessToken:
    secretName: my-access-token-secret
    key: access-token
Copy to Clipboard Toggle word wrap

用户名和密码

OAuth 用户名和密码配置使用 OAuth Resource Owner Password Grant 机制。机制已弃用,且只支持在无法使用客户端凭证(ID 和 secret)的环境中启用集成。如果您的访问管理系统不支持其他方法或用户帐户进行身份验证,您可能需要使用用户帐户。

典型的方法是在您的授权服务器中创建一个代表您的客户端应用程序的特殊用户帐户。然后,为帐户提供随机生成的密码,并且有非常有限的权限集。例如,帐户只能连接到您的 Kafka 集群,但不允许使用任何其他服务或登录到用户界面。

考虑首先使用刷新令牌机制。

您可以在 tokenEndpointUri 属性中配置授权服务器的地址,以及客户端 ID、用户名以及身份验证中使用的密码。OAuth 客户端将连接到 OAuth 服务器,使用用户名、密码、客户端 ID 进行验证,甚至客户端 secret 来获取它将用来与 Kafka 代理进行身份验证的访问令牌。

passwordSecret 属性中,指定到包含密码的 Secret 的链接。

通常,您还必须使用公共 OAuth 客户端配置 clientId。如果使用机密 OAuth 客户端,还必须配置 clientSecret

使用带有公共客户端的用户名和密码的 OAuth 客户端身份验证示例

authentication:
  type: oauth
  tokenEndpointUri: https://sso.myproject.svc:8443/auth/realms/internal/protocol/openid-connect/token
  username: my-username
  passwordSecret:
    secretName: my-password-secret-name
    password: my-password-field-name
  clientId: my-public-client-id
Copy to Clipboard Toggle word wrap

使用用户名和密码和机密客户端进行 OAuth 客户端身份验证的示例

authentication:
  type: oauth
  tokenEndpointUri: https://sso.myproject.svc:8443/auth/realms/internal/protocol/openid-connect/token
  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
Copy to Clipboard Toggle word wrap

如果需要,可以指定 scope 今儿 audience

TLS

使用 HTTPS 协议访问 OAuth 服务器不需要任何其他配置,只要它使用的 TLS 证书由可信证书颁发机构签名,并且其主机名列在证书中。

如果您的 OAuth 服务器使用自签名证书,或者由不被信任的证书颁发机构签名,您可以在自定义资源中配置可信证书列表。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
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

76.1. KafkaClientAuthenticationOAuth 模式属性

type 属性是一个差异性程序,它区分来自 KafkaClientAuthenticationTls, KafkaClientAuthenticationScramSha256, KafkaClientAuthenticationScramSha512, KafkaClientAuthenticationPlainKafkaClientAuthenticationOAuth 类型。对于类型 KafkaClientAuthenticationOAuth,它需要是值 oauth

Expand
属性Description

accessToken

指向包含从授权服务器获取的访问令牌的 OpenShift Secret。

GenericSecretSource

accessTokenIsJwt

配置访问令牌是否应被视为 JWT。如果授权服务器返回不透明令牌,则这应设为 false。默认值为 true

布尔值

受众

对授权服务器进行身份验证时使用的 OAuth 受众。有些授权服务器需要明确设置 audience。可能的值取决于授权服务器的配置方式。默认情况下,在执行令牌端点请求时,不会指定 audience

字符串

clientId

Kafka 客户端 ID,用于向 OAuth 服务器进行身份验证并使用令牌端点 URI。

字符串

clientSecret

链接到包含 Kafka 客户端 secret 的 OpenShift Secret,用于向 OAuth 服务器进行身份验证并使用令牌端点 URI。

GenericSecretSource

connectTimeoutSeconds

连接到授权服务器时的连接超时(以秒为单位)。如果没有设置,则有效的连接超时为 60 秒。

整数

disableTlsHostnameVerification

启用或禁用 TLS 主机名验证。默认值为 false

布尔值

enableMetrics

启用或禁用 OAuth 指标。默认值为 false

布尔值

httpRetries

初始 HTTP 请求失败时尝试的最大重试次数。如果没有设置,则默认为不尝试任何重试。

整数

httpRetryPauseMs

重试失败的 HTTP 请求前需要暂停。如果没有设置,则默认为根本不暂停,而是立即重复请求。

整数

includeAcceptHeader

Accept 标头是否应该在请求中设置到授权服务器。默认值为 true

布尔值

maxTokenExpirySeconds

将访问令牌的生存时间设置为指定秒数。如果授权服务器返回不透明令牌,则应设置此项。

整数

passwordSecret

对包含密码的 Secret 的引用。

PasswordSecretSource

readTimeoutSeconds

连接到授权服务器时读取超时(以秒为单位)。如果没有设置,则有效读取超时为 60 秒。

整数

refreshToken

连接到包含刷新令牌的 OpenShift Secret,可用于从授权服务器获取访问令牌。

GenericSecretSource

scope

对授权服务器进行身份验证时要使用的 OAuth 范围。有些授权服务器需要此设置。可能的值取决于授权服务器的配置方式。在执行令牌端点请求时,不指定 范围

字符串

tlsTrustedCertificates

用于 TLS 连接到 OAuth 服务器的可信证书。

CertSecretSource 数组

tokenEndpointUri

授权服务器令牌端点 URI。

字符串

type

必须是 oauth

字符串

username

用于身份验证的用户名。

字符串

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat