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();
}
'HTTP/MyComp @ DOMAIN'はユーザープリンシパルではありません。サービスプリンシパルです。キータブを使用する場合は、サービスアカウントをお試しください。 –
サービスアカウントはどういう意味ですか? SPNはActive Directoryの専用アカウントに設定されています。これは上記の目的でのみ使用されています。 –
こんにちは。 Glenn Laneがあなたの質問に答えた場合は、それをコミュニティの他の人にも確認するようにマークしてください。そうでない場合は、私たちに知らせてください。 –