public class org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler extends java.lang.Object implements javax.security.auth.callback.CallbackHandler
{
private static final java.lang.String USER_PREFIX;
private static final org.slf4j.Logger LOG;
private java.lang.String userName;
private final java.util.Map credentials;
private final java.util.Set authzHosts;
public void <init>(javax.security.auth.login.Configuration, java.lang.String, java.util.Set) throws java.io.IOException
{
javax.security.auth.login.AppConfigurationEntry v;
java.util.HashMap v;
java.util.Map v, v, v;
int v, v, v;
java.lang.String v, v, v, v;
javax.security.auth.login.Configuration v;
boolean v, v;
org.slf4j.Logger v;
java.util.Iterator v;
java.util.Set v, v;
java.io.IOException v;
javax.security.auth.login.AppConfigurationEntry[] v;
org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler v;
java.lang.Object v, v, v;
v := @this: org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler;
v := @parameter: javax.security.auth.login.Configuration;
v := @parameter: java.lang.String;
v := @parameter: java.util.Set;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: java.util.Map credentials> = v;
v = virtualinvoke v.<javax.security.auth.login.Configuration: javax.security.auth.login.AppConfigurationEntry[] getAppConfigurationEntry(java.lang.String)>(v);
if v != null goto label;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Could not find a \'\u0001\' entry in this configuration: Server cannot start.");
v = <org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String)>(v);
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: java.util.Map credentials>;
interfaceinvoke v.<java.util.Map: void clear()>();
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<javax.security.auth.login.AppConfigurationEntry: java.util.Map getOptions()>();
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("user_");
if v == 0 goto label;
v = "user_";
v = virtualinvoke v.<java.lang.String: int length()>();
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
v = v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: java.util.Map credentials>;
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
goto label;
label:
v = v + 1;
goto label;
label:
v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: java.util.Set authzHosts> = v;
return;
}
public void handle(javax.security.auth.callback.Callback[]) throws javax.security.auth.callback.UnsupportedCallbackException
{
javax.security.auth.callback.Callback[] v;
org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler v;
int v, v;
boolean v, v, v, v;
javax.security.auth.callback.Callback v;
v := @this: org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler;
v := @parameter: javax.security.auth.callback.Callback[];
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = v instanceof javax.security.auth.callback.NameCallback;
if v == 0 goto label;
specialinvoke v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: void handleNameCallback(javax.security.auth.callback.NameCallback)>(v);
goto label;
label:
v = v instanceof javax.security.auth.callback.PasswordCallback;
if v == 0 goto label;
specialinvoke v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: void handlePasswordCallback(javax.security.auth.callback.PasswordCallback)>(v);
goto label;
label:
v = v instanceof javax.security.sasl.RealmCallback;
if v == 0 goto label;
specialinvoke v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: void handleRealmCallback(javax.security.sasl.RealmCallback)>(v);
goto label;
label:
v = v instanceof javax.security.sasl.AuthorizeCallback;
if v == 0 goto label;
specialinvoke v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: void handleAuthorizeCallback(javax.security.sasl.AuthorizeCallback)>(v);
label:
v = v + 1;
goto label;
label:
return;
}
private void handleNameCallback(javax.security.auth.callback.NameCallback)
{
org.slf4j.Logger v;
javax.security.auth.callback.NameCallback v;
org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler v;
java.util.Map v;
java.lang.Object v;
java.lang.String v, v, v, v;
v := @this: org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler;
v := @parameter: javax.security.auth.callback.NameCallback;
v = v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: java.util.Map credentials>;
v = virtualinvoke v.<javax.security.auth.callback.NameCallback: java.lang.String getDefaultName()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = <org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: org.slf4j.Logger LOG>;
v = virtualinvoke v.<javax.security.auth.callback.NameCallback: java.lang.String getDefaultName()>();
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object)>("User \'{}\' not found in list of DIGEST-MD5 authenticateable users.", v);
return;
label:
v = virtualinvoke v.<javax.security.auth.callback.NameCallback: java.lang.String getDefaultName()>();
virtualinvoke v.<javax.security.auth.callback.NameCallback: void setName(java.lang.String)>(v);
v = virtualinvoke v.<javax.security.auth.callback.NameCallback: java.lang.String getDefaultName()>();
v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: java.lang.String userName> = v;
return;
}
private void handlePasswordCallback(javax.security.auth.callback.PasswordCallback)
{
javax.security.auth.callback.PasswordCallback v;
org.slf4j.Logger v;
org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler v;
java.util.Map v, v;
char[] v;
java.lang.Object v;
java.lang.String v, v, v;
boolean v;
v := @this: org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler;
v := @parameter: javax.security.auth.callback.PasswordCallback;
v = v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: java.util.Map credentials>;
v = v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: java.lang.String userName>;
v = interfaceinvoke v.<java.util.Map: boolean containsKey(java.lang.Object)>(v);
if v == 0 goto label;
v = v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: java.util.Map credentials>;
v = v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: java.lang.String userName>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: char[] toCharArray()>();
virtualinvoke v.<javax.security.auth.callback.PasswordCallback: void setPassword(char[])>(v);
goto label;
label:
v = <org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: org.slf4j.Logger LOG>;
v = v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: java.lang.String userName>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object)>("No password found for user: {}", v);
label:
return;
}
private void handleRealmCallback(javax.security.sasl.RealmCallback)
{
javax.security.sasl.RealmCallback v;
org.slf4j.Logger v;
org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler v;
java.lang.String v, v;
v := @this: org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler;
v := @parameter: javax.security.sasl.RealmCallback;
v = <org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: org.slf4j.Logger LOG>;
v = virtualinvoke v.<javax.security.sasl.RealmCallback: java.lang.String getDefaultText()>();
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("QuorumLearner supplied realm: {}", v);
v = virtualinvoke v.<javax.security.sasl.RealmCallback: java.lang.String getDefaultText()>();
virtualinvoke v.<javax.security.sasl.RealmCallback: void setText(java.lang.String)>(v);
return;
}
private void handleAuthorizeCallback(javax.security.sasl.AuthorizeCallback)
{
java.lang.String[] v;
int v;
java.lang.Boolean v;
java.lang.String v, v, v, v;
boolean v, v, v;
org.slf4j.Logger v, v, v;
java.util.Set v;
javax.security.sasl.AuthorizeCallback v;
org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler v;
v := @this: org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler;
v := @parameter: javax.security.sasl.AuthorizeCallback;
v = virtualinvoke v.<javax.security.sasl.AuthorizeCallback: java.lang.String getAuthenticationID()>();
v = virtualinvoke v.<javax.security.sasl.AuthorizeCallback: java.lang.String getAuthorizationID()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>("[/@]");
v = lengthof v;
if v != 3 goto label;
v = v.<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: java.util.Set authzHosts>;
v = v[1];
v = interfaceinvoke v.<java.util.Set: boolean contains(java.lang.Object)>(v);
label:
if v != 0 goto label;
v = <org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: org.slf4j.Logger LOG>;
v = v[1];
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object)>("SASL authorization completed, {} is not authorized to connect", v);
label:
virtualinvoke v.<javax.security.sasl.AuthorizeCallback: void setAuthorized(boolean)>(v);
v = virtualinvoke v.<javax.security.sasl.AuthorizeCallback: boolean isAuthorized()>();
if v == 0 goto label;
virtualinvoke v.<javax.security.sasl.AuthorizeCallback: void setAuthorizedID(java.lang.String)>(v);
v = <org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object,java.lang.Object)>("Successfully authenticated learner: authenticationID={};  authorizationID={}.", v, v);
label:
v = <org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: org.slf4j.Logger LOG>;
v = virtualinvoke v.<javax.security.sasl.AuthorizeCallback: boolean isAuthorized()>();
v = staticinvoke <java.lang.Boolean: java.lang.Boolean valueOf(boolean)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("SASL authorization completed, authorized flag set to {}", v);
return;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/zookeeper/server/quorum/auth/SaslQuorumServerCallbackHandler;");
<org.apache.zookeeper.server.quorum.auth.SaslQuorumServerCallbackHandler: org.slf4j.Logger LOG> = v;
return;
}
}