Wir entwickeln eine Webanwendung, die mit Hadoop-Komponenten wie HDFS, HBase und Impala interagiert. Der Cluster ist kerberisiert, wir authentifizieren uns mit JAAS config. JAAS in VM Argumente wie unterKerberos-Fehler beim Verbinden mit Impala und HBase
-Djava.security.auth.login.config=/user/gss-jaas.conf
-Djava.security.krb5.conf=/user/krb5.ini
-Djavax.security.auth.useSubjectCredsOnly=false
Unsere JAAS Config Wir konfigurieren ist als unten
com.sun.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=false
doNotPrompt=true
useKeyTab=true
keyTab="file:C:/blah/blah/dummy.keytab"
principal="[email protected]"
debug=false;
};
Es funktioniert gut, wenn sie hbase und HDFS verbindet. Aber während wir uns mit Impala verbinden, stehen wir vor Problemen. Wir können mit Impala verbinden, wenn wir com.sun.security.jgss.initiate
zu Client
ändern Aber wir wollen nicht ändern oder zwischen Jaas-Konfigurationen wechseln.
Gibt es eine Möglichkeit, die gleiche JAAS-Konfigurationsdatei für alle Dienste zu verwenden? Wir möchten dazu System.setProperties nicht verwenden. Und wenn wir zwischen JAAS-Konfigurationen wechseln, bekommen wir Ausnahmen. Also wäre es besser, die selbe Konfigurationsdatei zu verwenden.
Irgendwelche Hilfe?
By the way, 'com.sun.security.jgss.initiate' wird weiterhin unterstützt, aber es ist veraltet, sollten Sie Verwenden Sie explizit 'com.sun.security.jgss.krb5.initiate' anstelle von –
Und wenn Sie neugierig sind, wie JAAS Ihre lädt Konfiguration (oder wenn Sie Ihre Konfiguration debuggen müssen, weil Syntaxfehler und FileNotFound standardmäßig nicht gemeldet werden): '-Djava.security.debug = gssloginconfig, configfile, configparser, logincontext' –