From 249cb74cebe384c749fa0b7a0383f14c422a7e00 Mon Sep 17 00:00:00 2001 From: hariprasad-SAP <111269823+hariprasad-SAP@users.noreply.github.com> Date: Mon, 15 Aug 2022 14:07:39 +0530 Subject: [PATCH 1/2] Update ExternalMechanism.java to be RFC compliant The SASL External mechanism is configured in this class (ExternalMechanism.java) of Apache qpid-jms. We can notice that the initial response is configured in Line 28. It is always set to EMPTY (empty byte array defined here) and cannot be configured to a custom string that we can use as identity string. Hence this library is NOT RFC compliant If we have to pass the authorization identity string to the server then we must configure the initial response of that client. --- .../java/org/apache/qpid/jms/sasl/ExternalMechanism.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/sasl/ExternalMechanism.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/sasl/ExternalMechanism.java index 13d8fc0f2..e5b0bd146 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/sasl/ExternalMechanism.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/sasl/ExternalMechanism.java @@ -25,7 +25,11 @@ public class ExternalMechanism extends AbstractMechanism { @Override public byte[] getInitialResponse() { - return EMPTY; + String username = getUsername(); + if(username == null || username.isEmpty()){ + return EMPTY; + } + return username.getBytes(StandardCharsets.UTF_8); } @Override From 8032c29f4a98a9212331e228652fb2b7e54d1882 Mon Sep 17 00:00:00 2001 From: hariprasad-SAP <111269823+hariprasad-SAP@users.noreply.github.com> Date: Mon, 15 Aug 2022 14:16:12 +0530 Subject: [PATCH 2/2] Added the import statement for StandardCharsets --- .../main/java/org/apache/qpid/jms/sasl/ExternalMechanism.java | 1 + 1 file changed, 1 insertion(+) diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/sasl/ExternalMechanism.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/sasl/ExternalMechanism.java index e5b0bd146..8abc0bb1c 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/sasl/ExternalMechanism.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/sasl/ExternalMechanism.java @@ -16,6 +16,7 @@ */ package org.apache.qpid.jms.sasl; +import java.nio.charset.StandardCharsets; import java.security.Principal; /**