2017-08-19 3 views
0

Nous développons une application web qui interagit avec des composants hadoop tels que HDFS, HBase et Impala. Le cluster est kerberisé, nous nous authentifions avec la configuration JAAS. Nous configurons JAAS dans les arguments VM comme ci-dessousErreur Kerberos se connectant à impala et hbase

-Djava.security.auth.login.config=/user/gss-jaas.conf 
-Djava.security.krb5.conf=/user/krb5.ini 
-Djavax.security.auth.useSubjectCredsOnly=false 

Notre config JAAS est comme ci-dessous

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; 
}; 

Il fonctionne très bien lors de la connexion à HBase et HDFS. Mais en nous connectant avec Impala, nous sommes confrontés à des problèmes. Nous pouvons nous connecter avec Impala lorsque nous changeons com.sun.security.jgss.initiate à Client Mais nous ne voulons pas changer ou basculer entre configs Jaas.

Est-il possible d'utiliser le même fichier de configuration JAAS pour tous les services? Nous ne voulons pas utiliser System.setProperties pour cela. et aussi lors de la commutation entre configs JAAS nous obtenons des exceptions. Donc, en utilisant le même fichier de configuration serait mieux.

Une aide?

Répondre

0

Vous ne devez pas basculer. Utilisez simplement les deux! Avez-vous demandé pourquoi il y a deux ; obligatoires - un après le dernier paramètre, et un après l'accolade? C'est parce que vous pouvez avoir plusieurs mécanismes définis dans la section (essayé du 1er au dernier), et plusieurs sections (avec des noms différents) dans le même fichier de configuration.

Regardez dans la documentation Kafka par exemple, comment ils définir la configuration JAAS tant pour le courtier et les applications client dans le même fichier: http://docs.confluent.io/current/kafka/sasl.html

Et si vous êtes curieux de connaître les multiples mécanismes, regardez dans le documentation Java (mais attention, ce genre de choses est un cauchemar pour modifier et déboguer ...)https://docs.oracle.com/javase/8/docs/jre/api/security/jaas/spec/com/sun/security/auth/module/Krb5LoginModule.html

+0

Par ailleurs, 'com.sun.security.jgss.initiate' est toujours prise en charge mais il est dépréciée, vous devriez utilisez explicitement 'com.sun.security.jgss.krb5.initiate' à la place –

+0

Et si vous êtes curieux de savoir comment JAAS charge votre configuration (ou si vous devez déboguer votre configuration, car les erreurs de syntaxe et FileNotFound ne sont pas signalées par défaut): '-Djava.security.debug = gssloginconfig, configfile, configparser, logincontext' –