This is an automated email from the ASF dual-hosted git repository.
technoboy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new fee86932b05 [fix][ws] Fix WebSocket authentication with
authenticateOriginalAuthData enabled (#24615)
fee86932b05 is described below
commit fee86932b05cafe77c7429c40c3cd875618f47cc
Author: Penghui Li <[email protected]>
AuthorDate: Sun Aug 10 20:21:49 2025 -0700
[fix][ws] Fix WebSocket authentication with authenticateOriginalAuthData
enabled (#24615)
---
.../org/apache/pulsar/broker/service/ServerCnx.java | 4 +++-
.../proxy/ProxyRoleAuthWebServiceURLTest.java | 2 ++
... => ProxyRoleAuthenticateOriginalAuthDataTest.java} | 16 ++++++----------
...AuthenticateOriginalAuthDataWebServiceURLTest.java} | 18 +++++++-----------
4 files changed, 18 insertions(+), 22 deletions(-)
diff --git
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java
index e2995a0a2cf..d1bc4953d11 100644
---
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java
+++
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java
@@ -28,6 +28,7 @@ import static
org.apache.pulsar.broker.lookup.TopicLookupBase.lookupTopicAsync;
import static
org.apache.pulsar.broker.service.persistent.PersistentTopic.getMigratedClusterUrl;
import static
org.apache.pulsar.broker.service.schema.BookkeeperSchemaStorage.ignoreUnrecoverableBKException;
import static org.apache.pulsar.common.api.proto.ProtocolVersion.v5;
+import static
org.apache.pulsar.common.naming.Constants.WEBSOCKET_DUMMY_ORIGINAL_PRINCIPLE;
import static
org.apache.pulsar.common.protocol.Commands.DEFAULT_CONSUMER_EPOCH;
import static
org.apache.pulsar.common.protocol.Commands.newLookupErrorResponse;
import com.google.common.annotations.VisibleForTesting;
@@ -1125,7 +1126,8 @@ public class ServerCnx extends PulsarHandler implements
TransportCnx {
log.debug("[{}] Authenticate role : {}", remoteAddress, role);
}
- if (connect.hasOriginalPrincipal() &&
service.getPulsar().getConfig().isAuthenticateOriginalAuthData()) {
+ if (connect.hasOriginalPrincipal() &&
service.getPulsar().getConfig().isAuthenticateOriginalAuthData()
+ &&
!WEBSOCKET_DUMMY_ORIGINAL_PRINCIPLE.equals(connect.getOriginalPrincipal())) {
// Flow:
// 1. Initialize original authentication.
// 2. Authenticate the proxy's authentication data.
diff --git
a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthWebServiceURLTest.java
b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthWebServiceURLTest.java
index f726178aabc..08087f6f3e0 100644
---
a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthWebServiceURLTest.java
+++
b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthWebServiceURLTest.java
@@ -19,10 +19,12 @@
package org.apache.pulsar.websocket.proxy;
import org.apache.pulsar.websocket.service.WebSocketProxyConfiguration;
+import org.testng.annotations.Test;
/**
* Same test with ProxyRoleAuthTest but using REST API as the internal client.
*/
+@Test(groups = "websocket")
public class ProxyRoleAuthWebServiceURLTest extends ProxyRoleAuthTest {
@Override
diff --git
a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthWebServiceURLTest.java
b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthenticateOriginalAuthDataTest.java
similarity index 60%
copy from
pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthWebServiceURLTest.java
copy to
pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthenticateOriginalAuthDataTest.java
index f726178aabc..0f292669117 100644
---
a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthWebServiceURLTest.java
+++
b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthenticateOriginalAuthDataTest.java
@@ -18,21 +18,17 @@
*/
package org.apache.pulsar.websocket.proxy;
-import org.apache.pulsar.websocket.service.WebSocketProxyConfiguration;
+import org.testng.annotations.Test;
/**
* Same test with ProxyRoleAuthTest but using REST API as the internal client.
*/
-public class ProxyRoleAuthWebServiceURLTest extends ProxyRoleAuthTest {
+@Test(groups = "websocket")
+public class ProxyRoleAuthenticateOriginalAuthDataTest extends
ProxyRoleAuthTest {
@Override
- protected WebSocketProxyConfiguration getProxyConfig() {
- // Create WebSocket proxy configuration with authentication and
authorization enabled
- WebSocketProxyConfiguration proxyConfig = super.getProxyConfig();
- proxyConfig.setServiceUrl(pulsar.getWebServiceAddress());
- proxyConfig.setServiceUrlTls(pulsar.getWebServiceAddressTls());
- proxyConfig.setBrokerServiceUrl(null);
- proxyConfig.setBrokerServiceUrlTls(null);
- return proxyConfig;
+ protected void doInitConf() throws Exception {
+ super.doInitConf();
+ conf.setAuthenticateOriginalAuthData(true);
}
}
diff --git
a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthWebServiceURLTest.java
b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthenticateOriginalAuthDataWebServiceURLTest.java
similarity index 55%
copy from
pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthWebServiceURLTest.java
copy to
pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthenticateOriginalAuthDataWebServiceURLTest.java
index f726178aabc..4078f67fc2b 100644
---
a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthWebServiceURLTest.java
+++
b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyRoleAuthenticateOriginalAuthDataWebServiceURLTest.java
@@ -18,21 +18,17 @@
*/
package org.apache.pulsar.websocket.proxy;
-import org.apache.pulsar.websocket.service.WebSocketProxyConfiguration;
+import org.testng.annotations.Test;
/**
- * Same test with ProxyRoleAuthTest but using REST API as the internal client.
+ * Same test with ProxyRoleAuthWebServiceURLTest but with
authenticateOriginalAuthData enabled.
*/
-public class ProxyRoleAuthWebServiceURLTest extends ProxyRoleAuthTest {
+@Test(groups = "websocket")
+public class ProxyRoleAuthenticateOriginalAuthDataWebServiceURLTest extends
ProxyRoleAuthWebServiceURLTest {
@Override
- protected WebSocketProxyConfiguration getProxyConfig() {
- // Create WebSocket proxy configuration with authentication and
authorization enabled
- WebSocketProxyConfiguration proxyConfig = super.getProxyConfig();
- proxyConfig.setServiceUrl(pulsar.getWebServiceAddress());
- proxyConfig.setServiceUrlTls(pulsar.getWebServiceAddressTls());
- proxyConfig.setBrokerServiceUrl(null);
- proxyConfig.setBrokerServiceUrlTls(null);
- return proxyConfig;
+ protected void doInitConf() throws Exception {
+ super.doInitConf();
+ conf.setAuthenticateOriginalAuthData(true);
}
}