Skip to content

Commit 4601478

Browse files
rdhabaliasrinath-ctds
authored andcommitted
[fix][client] Initializing client-authentication using configured auth params (apache#23610)
(cherry picked from commit 13f77aa) (cherry picked from commit 9df41fc)
1 parent 592b4b0 commit 4601478

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceTest.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@
103103
import org.apache.pulsar.client.api.SubscriptionInitialPosition;
104104
import org.apache.pulsar.client.api.SubscriptionMode;
105105
import org.apache.pulsar.client.api.SubscriptionType;
106+
import org.apache.pulsar.client.impl.ClientBuilderImpl;
106107
import org.apache.pulsar.client.impl.ClientCnx;
107108
import org.apache.pulsar.client.impl.ConnectionPool;
108109
import org.apache.pulsar.client.impl.PulsarServiceNameResolver;
@@ -1943,5 +1944,49 @@ public void close() {
19431944
}
19441945
}
19451946
}
1947+
1948+
@Test
1949+
public void testTlsWithAuthParams() throws Exception {
1950+
final String topicName = "persistent://prop/ns-abc/newTopic";
1951+
final String subName = "newSub";
1952+
Authentication auth;
1953+
1954+
Set<String> providers = new HashSet<>();
1955+
providers.add("org.apache.pulsar.broker.authentication.AuthenticationProviderTls");
1956+
1957+
conf.setAuthenticationEnabled(true);
1958+
conf.setAuthenticationProviders(providers);
1959+
conf.setBrokerServicePortTls(Optional.of(0));
1960+
conf.setWebServicePortTls(Optional.of(0));
1961+
conf.setTlsCertificateFilePath(BROKER_CERT_FILE_PATH);
1962+
conf.setTlsKeyFilePath(BROKER_KEY_FILE_PATH);
1963+
conf.setTlsAllowInsecureConnection(false);
1964+
conf.setTlsTrustCertsFilePath(CA_CERT_FILE_PATH);
1965+
conf.setNumExecutorThreadPoolSize(5);
1966+
restartBroker();
1967+
1968+
String authParam = String.format("tlsCertFile:%s,tlsKeyFile:%s", getTlsFileForClient("admin.cert"),
1969+
getTlsFileForClient("admin.key-pk8"));
1970+
String authClassName = "org.apache.pulsar.client.impl.auth.AuthenticationTls";
1971+
ClientConfigurationData conf = new ClientConfigurationData();
1972+
conf.setServiceUrl(brokerUrlTls.toString());
1973+
conf.setAuthParams(authParam);
1974+
conf.setAuthPluginClassName(authClassName);
1975+
conf.setTlsAllowInsecureConnection(true);
1976+
1977+
PulsarClient pulsarClient = null;
1978+
try {
1979+
pulsarClient = (new ClientBuilderImpl(conf)).build();
1980+
1981+
@Cleanup
1982+
Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
1983+
.subscribe();
1984+
} catch (Exception e) {
1985+
fail("should not fail");
1986+
} finally {
1987+
pulsarClient.close();
1988+
}
1989+
}
1990+
19461991
}
19471992

pulsar-client/src/main/java/org/apache/pulsar/client/impl/ClientBuilderImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.apache.pulsar.client.api.PulsarClientException.UnsupportedAuthenticationException;
3535
import org.apache.pulsar.client.api.ServiceUrlProvider;
3636
import org.apache.pulsar.client.api.SizeUnit;
37+
import org.apache.pulsar.client.impl.auth.AuthenticationDisabled;
3738
import org.apache.pulsar.client.impl.conf.ClientConfigurationData;
3839
import org.apache.pulsar.client.impl.conf.ConfigurationDataUtils;
3940

@@ -60,6 +61,9 @@ public PulsarClient build() throws PulsarClientException {
6061
"Cannot get service url from service url provider.");
6162
conf.setServiceUrl(conf.getServiceUrlProvider().getServiceUrl());
6263
}
64+
if (conf.getAuthentication() == null || conf.getAuthentication() == AuthenticationDisabled.INSTANCE) {
65+
setAuthenticationFromPropsIfAvailable(conf);
66+
}
6367
PulsarClient client = new PulsarClientImpl(conf);
6468
if (conf.getServiceUrlProvider() != null) {
6569
conf.getServiceUrlProvider().initialize(client);

0 commit comments

Comments
 (0)