4.4.6.4. 为 Kafka 组件配置 OAuth 2.0

这个步骤描述了如何将 Kafka 组件配置为使用授权服务器的 OAuth 2.0 身份验证。

您可以为以下对象配置身份验证:

  • Kafka Connect
  • Kafka MirrorMaker
  • Kafka Bridge

在这种情况下,Kafka 组件和授权服务器会在同一集群中运行。

开始前

有关为 Kafka 组件配置 OAuth 2.0 身份验证的更多信息,请参阅:

先决条件

  • AMQ Streams 和 Kafka 正在运行
  • 为对 Kafka 代理的 OAuth 访问部署并配置了 OAuth 授权服务器
  • 为 OAuth 2.0 配置 Kafka 代理

步骤

  1. 创建客户端机密,并将它作为环境变量挂载到组件上。

    例如,此处我们为 Kafka Bridge 创建客户端 Secret

    apiVersion: kafka.strimzi.io/v1beta1
    kind: Secret
    metadata:
     name: my-bridge-oauth
    type: Opaque
    data:
     clientSecret: MGQ1OTRmMzYtZTllZS00MDY2LWI5OGEtMTM5MzM2NjdlZjQw 1
    1
    clientSecret 键必须采用 base64 格式。
  2. 为 Kafka 组件创建或编辑资源,以便为身份验证属性配置 OAuth 2.0 身份验证。

    对于 OAuth 2.0 身份验证,您可以使用:

    • 客户端 ID 和 secret
    • 客户端 ID 和刷新令牌
    • 访问令牌
    • TLS

    KafkaClientAuthenticationOAuth 模式参考提供了每个模式的示例

    例如,此处的 OAuth 2.0 使用客户端 ID 和 secret 分配给 Kafka Bridge 客户端,以及 TLS:

    apiVersion: kafka.strimzi.io/v1beta1
    kind: KafkaBridge
    metadata:
      name: my-bridge
    spec:
      # ...
      authentication:
        type: oauth 1
        tokenEndpointUri: https://<auth-server-address>/auth/realms/master/protocol/openid-connect/token 2
        clientId: kafka-bridge
        clientSecret:
          secretName: my-bridge-oauth
          key: clientSecret
        tlsTrustedCertificates: 3
        - secretName: oauth-server-cert
          certificate: tls.crt
    1
    验证类型设置为 oauth
    2
    用于身份验证的令牌端点的 URI。
    3
    TLS 到授权服务器的可信证书。

    根据您应用 OAuth 2.0 身份验证的方式以及授权服务器的类型,您可以使用额外的配置选项:

    # ...
    spec:
      # ...
      authentication:
        # ...
        disableTlsHostnameVerification: true 1
        checkAccessTokenType: false 2
        accessTokenIsJwt: false 3
        scope: any 4
    1
    (可选)禁用 TLS 主机名验证。默认为 false
    2
    如果授权服务器没有在 JWT 令牌中返回 拼写错误 (类型)声明,您可以应用 checkAccessTokenType: false 来跳过令牌类型检查。默认值为 true
    3
    如果您使用不透明令牌,您可以应用 accessTokenIsJwt: false,以便访问令牌不被视为 JWT 令牌。
    4
    (可选)从令牌端点请求令牌 的范围。授权服务器可能需要客户端指定范围。本例中为 任意.
  3. 将更改应用到 Kafka 资源的部署。

    oc apply -f your-file
  4. 检查日志中的更新,或者查看 pod 状态转换:

    oc logs -f ${POD_NAME} -c ${CONTAINER_NAME}
    oc get pod -w

    滚动更新配置组件,以使用 OAuth 2.0 身份验证与 Kafka 代理交互。