2017-02-13 7 views
1

Ich habe Probleme mit Accumulo Authentifizierung mit Kerberos. Wenn ich versuche, Token nicht mit Ausnahme meiner App zu erstellen:Accumulo Kerberos Authentifizierung

Exception in thread "main" java.lang.IllegalArgumentException: Subject is not logged in via Kerberos 
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:92) 
    at org.apache.accumulo.core.client.security.tokens.KerberosToken.<init>(KerberosToken.java:56) 

Mein Verbindungscode:

UserGroupInformation.loginUserFromKeytab("user", "keytab"); // ok 
KerberosToken token = new KerberosToken(); // Exception goes here 

Jede Hilfe

Antwort

1

geschätzt würde es scheinen, dass Ihre Kerberos-Login funktioniert nicht wie erwartet . Das Konstruktor tut folgendes:

public KerberosToken(String principal) throws IOException { 
    requireNonNull(principal); 
    final UserGroupInformation ugi = UserGroupInformation.getCurrentUser(); 
    checkArgument(ugi.hasKerberosCredentials(), "Subject is not logged in via Kerberos"); 
    checkArgument(principal.equals(ugi.getUserName()), "Provided principal does not match currently logged-in user"); 
    this.principal = ugi.getUserName(); 
    } 

Irgendwie Ihre UGI Anruf wird in einem aktuellen Benutzer führt, die Kerberos-Berechtigungsnachweise nicht haben. Sie sollten in der Lage sein, dies selbst zu überprüfen. Ich habe nicht eine einfache Lösung für Sie, aber Sie können die folgenden versuchen, dies zu debuggen:

  1. Sets org.apache.hadoop.security = DEBUG in Ihrer log4j Konfiguration
  2. Pass -Dsun.security. krb5.debug = true zu Ihrer JVM (oder verwenden Sie System.setProperty (...))
Verwandte Themen