4.10.6.3. 将 Kafka Java 客户端配置为使用 OAuth 2.0
这个步骤描述了如何配置 Kafka 制作者和使用者 API,以使用 OAuth 2.0 与 Kafka 代理交互。
将客户端回调插件添加到 pom.xml 文件,并配置系统属性。
先决条件
- AMQ Streams 和 Kafka 正在运行
- 为对 Kafka 代理的 OAuth 访问部署并配置了 OAuth 授权服务器
- 为 OAuth 2.0 配置 Kafka 代理
流程
在 Kafka 客户端的
pom.xml
文件中添加带有 OAuth 2.0 支持的客户端库:<dependency> <groupId>io.strimzi</groupId> <artifactId>kafka-oauth-client</artifactId> <version>0.8.1.redhat-00004</version> </dependency>
为回调配置系统属性:
例如:
System.setProperty(ClientConfig.OAUTH_TOKEN_ENDPOINT_URI, “https://AUTH-SERVER-ADDRESS/auth/realms/REALM-NAME/protocol/openid-connect/token”); 1 System.setProperty(ClientConfig.OAUTH_CLIENT_ID, "CLIENT-NAME"); 2 System.setProperty(ClientConfig.OAUTH_CLIENT_SECRET, "CLIENT_SECRET"); 3 System.setProperty(ClientConfig.OAUTH_SCOPE, "SCOPE-VALUE") 4
在 Kafka 客户端配置中的 TLS 加密连接上启用 OAUTHBEARER OR PLAIN 机制。
例如:
为 Kafka 客户端启用 OAUTHBEARER
props.put("sasl.jaas.config", "org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;"); props.put("security.protocol", "SASL_SSL"); props.put("sasl.mechanism", "OAUTHBEARER"); props.put("sasl.login.callback.handler.class", "io.strimzi.kafka.oauth.client.JaasClientOauthLoginCallbackHandler");
为 Kafka 客户端启用 PLAIN
props.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"$CLIENT_ID_OR_ACCOUNT_NAME\" password=\"$SECRET_OR_ACCESS_TOKEN\" ;"); props.put("security.protocol", "SASL_SSL"); 1 props.put("sasl.mechanism", "PLAIN");
- 1
- 在这里,我们使用
SASL_SSL
通过 TLS 连接使用。在未加密连接中使用SASL_PLAINTEXT
只用于本地开发。
- 验证 Kafka 客户端可以访问 Kafka 代理。