|
@@ -20,6 +20,7 @@ package org.apache.hadoop.hdfs.protocol.datatransfer.sasl;
|
|
|
import java.io.DataInputStream;
|
|
|
import java.io.DataOutputStream;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
import javax.security.auth.callback.CallbackHandler;
|
|
|
import javax.security.sasl.Sasl;
|
|
|
import javax.security.sasl.SaslClient;
|
|
@@ -52,6 +53,7 @@ class SaslParticipant {
|
|
|
private static final String SERVER_NAME = "0";
|
|
|
private static final String PROTOCOL = "hdfs";
|
|
|
private static final String[] MECHANISM_ARRAY = {SaslConstants.SASL_MECHANISM};
|
|
|
+ private static final byte[] EMPTY_BYTE_ARRAY = {};
|
|
|
|
|
|
// One of these will always be null.
|
|
|
private final SaslServer saslServer;
|
|
@@ -110,7 +112,7 @@ class SaslParticipant {
|
|
|
* @param saslServer to wrap
|
|
|
*/
|
|
|
private SaslParticipant(SaslServer saslServer) {
|
|
|
- this.saslServer = saslServer;
|
|
|
+ this.saslServer = Objects.requireNonNull(saslServer, "saslServer == null");
|
|
|
this.saslClient = null;
|
|
|
}
|
|
|
|
|
@@ -121,7 +123,12 @@ class SaslParticipant {
|
|
|
*/
|
|
|
private SaslParticipant(SaslClient saslClient) {
|
|
|
this.saslServer = null;
|
|
|
- this.saslClient = saslClient;
|
|
|
+ this.saslClient = Objects.requireNonNull(saslClient, "saslClient == null");
|
|
|
+ }
|
|
|
+
|
|
|
+ byte[] createFirstMessage() throws SaslException {
|
|
|
+ return MECHANISM_ARRAY[0].equals(SaslConstants.SASL_MECHANISM_DEFAULT) ? EMPTY_BYTE_ARRAY
|
|
|
+ : evaluateChallengeOrResponse(EMPTY_BYTE_ARRAY);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -228,4 +235,9 @@ class SaslParticipant {
|
|
|
new SaslOutputStream(out, saslServer));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String toString() {
|
|
|
+ return "Sasl" + (saslServer != null? "Server" : "Client");
|
|
|
+ }
|
|
|
}
|