Skip to content

Commit 39d5608

Browse files
committed
fix: SASL/PLAIN
The previous fix did not work. This is now definitely verified to be working and also makes coherent sense.
1 parent e65584d commit 39d5608

File tree

4 files changed

+42
-16
lines changed

4 files changed

+42
-16
lines changed

.circleci/config.yml

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -226,39 +226,49 @@ jobs:
226226
name: zookeeper
227227
environment:
228228
- ALLOW_ANONYMOUS_LOGIN=yes
229-
- image: docker.io/bitnami/kafka:3
229+
- image: docker.io/bitnami/kafka:3.9.0
230230
name: kafka-0
231231
environment:
232232
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
233233
- KAFKA_CFG_BROKER_ID=0
234234
- ALLOW_PLAINTEXT_LISTENER=yes
235-
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT
236-
- KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093
237-
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka-0:9092,EXTERNAL://kafka-0:9093
235+
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT,SECURE:SASL_PLAINTEXT
236+
- KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093,SECURE://:9094
237+
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka-0:9092,EXTERNAL://kafka-0:9093,SECURE://kafka-1:9094
238238
- KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
239239
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
240-
- image: docker.io/bitnami/kafka:3
240+
- KAFKA_CLIENT_USERS=admin
241+
- KAFKA_CLIENT_PASSWORDS=admin-secret
242+
- KAFKA_CLIENT_LISTENER_NAME=SECURE
243+
- image: docker.io/bitnami/kafka:3.9.0
241244
name: kafka-1
242245
environment:
243246
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
244247
- KAFKA_CFG_BROKER_ID=1
245248
- ALLOW_PLAINTEXT_LISTENER=yes
246-
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT
247-
- KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093
248-
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka-1:9092,EXTERNAL://kafka-1:9093
249+
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT,SECURE:SASL_PLAINTEXT
250+
- KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093,SECURE://:9094
251+
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka-1:9092,EXTERNAL://kafka-1:9093,SECURE://kafka-1:9094
252+
- KAFKA_CFG_SASL_ENABLED_MECHANISMS=PLAIN
249253
- KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
250254
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
251-
- image: docker.io/bitnami/kafka:3
255+
- KAFKA_CLIENT_USERS=admin
256+
- KAFKA_CLIENT_PASSWORDS=admin-secret
257+
- KAFKA_CLIENT_LISTENER_NAME=SECURE
258+
- image: docker.io/bitnami/kafka:3.9.0
252259
name: kafka-2
253260
environment:
254261
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
255262
- KAFKA_CFG_BROKER_ID=2
256263
- ALLOW_PLAINTEXT_LISTENER=yes
257-
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT
258-
- KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093
259-
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka-2:9092,EXTERNAL://kafka-2:9093
264+
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT,SECURE:SASL_PLAINTEXT
265+
- KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093,SECURE://:9094
266+
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka-2:9092,EXTERNAL://kafka-2:9093,SECURE://kafka-1:9094
260267
- KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
261268
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
269+
- KAFKA_CLIENT_USERS=admin
270+
- KAFKA_CLIENT_PASSWORDS=admin-secret
271+
- KAFKA_CLIENT_LISTENER_NAME=SECURE
262272
- image: serjs/go-socks5-proxy
263273
name: proxy
264274
resource_class: xlarge # use of a smaller executor tends crashes on link
@@ -279,6 +289,7 @@ jobs:
279289
# Don't use the first node here since this is likely the controller and we want to ensure that we automatically
280290
# pick the controller for certain actions (e.g. topic creation) and don't just get lucky.
281291
KAFKA_CONNECT: "invalid:9093,kafka-1:9093"
292+
KAFKA_SASL_CONNECT: kafka-1:9094
282293
SOCKS_PROXY: "proxy:1080"
283294
steps:
284295
- checkout

docker-compose-kafka.yml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ services:
1111
volumes:
1212
- zookeeper_data:/bitnami/zookeeper
1313
kafka-0:
14-
image: docker.io/bitnami/kafka:3
14+
image: docker.io/bitnami/kafka:3.9.0
1515
ports:
1616
- "9010:9010"
1717
- "9096:9096"
@@ -24,13 +24,16 @@ services:
2424
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka-0:9000,EXTERNAL://localhost:9010,FOR_PROXY://kafka-0:9020,SECURE://localhost:9096
2525
- KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
2626
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
27+
- KAFKA_CLIENT_USERS=admin
28+
- KAFKA_CLIENT_PASSWORDS=admin-secret
29+
- KAFKA_CLIENT_LISTENER_NAME=SECURE
2730
volumes:
2831
- kafka_0_data:/bitnami/kafka
2932
- ./kafka_jaas.conf:/opt/bitnami/kafka/config/kafka_jaas.conf
3033
depends_on:
3134
- zookeeper
3235
kafka-1:
33-
image: docker.io/bitnami/kafka:3
36+
image: docker.io/bitnami/kafka:3.9.0
3437
ports:
3538
- "9011:9011"
3639
- "9097:9097"
@@ -43,13 +46,16 @@ services:
4346
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka-1:9000,EXTERNAL://localhost:9011,FOR_PROXY://kafka-1:9021,SECURE://localhost:9097
4447
- KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
4548
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
49+
- KAFKA_CLIENT_USERS=admin
50+
- KAFKA_CLIENT_PASSWORDS=admin-secret
51+
- KAFKA_CLIENT_LISTENER_NAME=SECURE
4652
volumes:
4753
- kafka_1_data:/bitnami/kafka
4854
- ./kafka_jaas.conf:/opt/bitnami/kafka/config/kafka_jaas.conf
4955
depends_on:
5056
- zookeeper
5157
kafka-2:
52-
image: docker.io/bitnami/kafka:3
58+
image: docker.io/bitnami/kafka:3.9.0
5359
ports:
5460
- "9012:9012"
5561
- "9098:9098"
@@ -62,6 +68,9 @@ services:
6268
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka-2:9000,EXTERNAL://localhost:9012,FOR_PROXY://kafka-2:9022,SECURE://localhost:9098
6369
- KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
6470
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
71+
- KAFKA_CLIENT_USERS=admin
72+
- KAFKA_CLIENT_PASSWORDS=admin-secret
73+
- KAFKA_CLIENT_LISTENER_NAME=SECURE
6574
volumes:
6675
- kafka_2_data:/bitnami/kafka
6776
- ./kafka_jaas.conf:/opt/bitnami/kafka/config/kafka_jaas.conf

src/messenger.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,9 @@ where
610610
let authentication_response =
611611
self.sasl_authentication(to_sent.into_inner()).await?;
612612
data_received = Some(authentication_response.auth_bytes.0);
613-
} else {
613+
}
614+
615+
if state.is_finished() {
614616
break;
615617
}
616618
}

tests/client.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ async fn test_sasl() {
4444
.sasl_config(rskafka::client::SaslConfig::Plain(
4545
rskafka::client::Credentials::new("admin".to_string(), "admin-secret".to_string()),
4646
))
47+
.backoff_config(BackoffConfig {
48+
deadline: Some(Duration::from_secs(1)),
49+
..Default::default()
50+
})
4751
.build()
4852
.await
4953
.unwrap();

0 commit comments

Comments
 (0)