2016-05-29 7 views
0

kerberosサービスのヘッダーに送信するために、javaでKerberosクライアントトークンを生成しようとしています。ユーザー入力なしでkerberosトークンを生成する方法

私はjaas login confと自分のユーザーのためのキータブを作成しました。 ユーザー入力なしで自動的にトークンを生成したい。今のところ、私はトークンを作成することができましたが、私は というユーザーのパスワードを入力するよう求められています。これは私が望むものではありません。 「doNotPrompt」を「true」に設定したとき(login.conf内)、keytabファイルを指定していても、「ユーザーからパスワードを取得できません」という という例外が発生します。

Webでコードサンプルがほとんど見つかりませんでしたが、結局私はそれらを使用しましたが、しかし、私は何をしようとしているのか答えは見つけられませんでした。 誰かが私が欲しいものを達成する方法を知っていますか?

私はlogin.confは次のとおりです。

com.sun.security.jgss.initiate { 
com.sun.security.auth.module.Krb5LoginModule required storeKey="true" 
principal="HTTP/[email protected]" useKeyTab="true" 
keytab="c:\Users\me\Desktop\abc.keytab"; 
} 

そして、私のJavaコードは次のとおりです。

String clientPrincipal = "HTTP/[email protected]"; 
String serverPrincipal = "HTTP/[email protected]"; 
Oid oid = new Oid("1.2.840.113554.1.2.2"); 

try 
{ 
    GSSManager manager = GSSManager.getInstance(); 
    GSSName gssUserName = manager.createName(clientPrincipal, GSSName.NT_USER_NAME, oid); 
    GSSCredential clientGSSCreds = manager.createCredential(gssUserName.canonicalize(oid), 
         GSSCredential.INDEFINITE_LIFETIME, 
         oid, 
         GSSCredential.INITIATE_ONLY); 

    GSSName gssServerName = manager.createName(serverPrincipal, GSSName.NT_USER_NAME); 
    GSSContext clientContext = manager.createContext(
         gssServerName.canonicalize(oid), 
         oid, 
         clientGSSCreds, 
         GSSCredential.INITATE_ONLY); 

    clientContext.requestCredDeleg(true); 
    byte[] token = clientContext.initSecContext(token, 0, token.length); 

} 
catch (GSSException e){ 
    e.printStackTrace(); 
} 
+0

'HTTP/MyComp @ DOMAIN'はユーザープリンシパルではありません。サービスプリンシパルです。キータブを使用する場合は、サービスアカウントをお試しください。 –

+0

サービスアカウントはどういう意味ですか? SPNはActive Directoryの専用アカウントに設定されています。これは上記の目的でのみ使用されています。 –

+0

こんにちは。 Glenn Laneがあなたの質問に答えた場合は、それをコミュニティの他の人にも確認するようにマークしてください。そうでない場合は、私たちに知らせてください。 –

答えて

0

keytabファイルが別のユーザーのためのキーを含めることができますので、あなたがあなたはlogin.confを伝える必要がありますキーを使用する主体。このプリンシパル名は任意です。キータブを作成したときに指定した名前と一致する必要があります(ユーザーの実際のUPNを使用することをお勧めします)。

関連する問題