2017-02-13 10 views
1

Kerberosを使用したAccumulo認証に問題があります。私は私のアプリは例外で失敗トークンを作成しようとすると:Accumulo Kerberos認証

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) 

私の接続コード:

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

すべてのヘルプは

答えて

1

を高く評価している期待どおりにKerberosログインが機能していないように見えます。

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

どういうわけか、あなたのUGIコールがKerberos証明書を持っていない、現在のユーザーが得られている:それコンストラクタは、次のことをやっています。これを自分で調べることができるはずです。私はあなたのための簡単な解決策を持っていないが、あなたはこれをデバッグするために、以下を試してみることができます。

  1. セットorg.apache.hadoop.security = DEBUGをあなたのlog4j設定
  2. パス-Dsun.securityに。 krb5.debug =あなたのJVMにtrue(またはSystem.setProperty(...)を使用)
関連する問題