2011-07-19 13 views
1
私は次のチュートリアル実行しているよ

http://download.oracle.com/javase/6/docs/technotes/guides/security/jgss/tutorials/BasicClientServer.htmlGSS-APIのJava奇妙なエラー

私は次のプロンプト取得しています:

することができます:私は次のエラーを取得する

Connected to server localhost/127.0.0.1 
Kerberos username [login]: {I enter my username here} 
Kerberos password for login: {I enter my password here} 

をこれの根本原因を確認する?

Exception in thread "main" GSSException: No valid credentials provided (Mechanism level: Attempt to obtain new INITIATE credentials failed! (null)) 
at sun.security.jgss.krb5.Krb5InitCredential.getTgt(Krb5InitCredential.java:333) 
at sun.security.jgss.krb5.Krb5InitCredential.getInstance(Krb5InitCredential.java:128) 
at sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Krb5MechFactory.java:106) 
at sun.security.jgss.krb5.Krb5MechFactory.getMechanismContext(Krb5MechFactory.java:172) 
at sun.security.jgss.GSSManagerImpl.getMechanismContext(GSSManagerImpl.java:209) 
at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:195) 
at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:162) 
at demo.SampleClient.main(SampleClient.java:145) 
Caused by: javax.security.auth.login.LoginException: Message stream modified (41) 
at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:696) 
at com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:542) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769) 
at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186) 
at javax.security.auth.login.LoginContext$5.run(LoginContext.java:706) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.login.LoginContext.invokeCreatorPriv(LoginContext.java:703) 
at javax.security.auth.login.LoginContext.login(LoginContext.java:575) 
at sun.security.jgss.GSSUtil.login(GSSUtil.java:246) 
at sun.security.jgss.krb5.Krb5Util.getTicket(Krb5Util.java:136) 
at sun.security.jgss.krb5.Krb5InitCredential$1.run(Krb5InitCredential.java:328) 
at java.security.AccessController.doPrivileged(Native Method) 
at sun.security.jgss.krb5.Krb5InitCredential.getTgt(Krb5InitCredential.java:325) 
... 7 more 
Caused by: KrbException: Message stream modified (41) 
at sun.security.krb5.KrbKdcRep.check(KrbKdcRep.java:53) 
at sun.security.krb5.KrbAsRep.<init>(KrbAsRep.java:96) 
at sun.security.krb5.KrbAsReq.getReply(KrbAsReq.java:449) 
at sun.security.krb5.Credentials.sendASRequest(Credentials.java:410) 
at sun.security.krb5.Credentials.acquireTGT(Credentials.java:378) 
at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:662) 
... 23 more 

答えて

2

私はこれが可能であれば不思議(つまり、レジストリキーが設定されている場合でも、ローカル管理者のためにロックアウトされ)ている:

http://cr.openjdk.java.net/~weijun/special/krb5winguide-2/raw_files/new/kwin

既知の問題

ADの場合アカウントは、 クライアントPCのローカル管理者グループにも追加されますが、マイクロソフトでは、そのようなクライアントがセッションキー をチケットから取得することを制限しています(allowtgtsessionkey regiストライキーを1にする)。 回避策は次のとおりです。ログインしたユーザーであることを忘れてkinit.exeを呼び出します。 LSA資格キャッシュに依存しません。

0

この問題は確認できません。私は自分のマシンで管理者権限を持っていますが、LSAからセッションキーを取得することはできます。 JGSSとKrb5LoginModuleで完全なデバッグ出力を有効にする必要があります。 krb5.iniとlogin.confも共有してください。クライアントがローカルホストのチケットを取得できないため、上記の例は機能しないことにご注意ください。これは、Active Directoryに適切なSPNが設定されたFQDNでなければなりません。

+0

あなたはそれがうまくいかないと思いますか? – hawkeye

+0

プロンプトとターゲットサーバーのためです。理由のために私の答えを読んでください。 –

+0

このチュートリアルでは、ユーザー名の入力を求めるメッセージが表示されます。 >このチュートリアルでは、Kerberosログインモジュールのcom.sun.security.auth.module.Krb5LoginModuleが構成ファイルで指定されています。このログインモジュールは、Kerberosの名前とパスワードの入力を求め、Kerberos KDCへの認証を試みます。 ターゲットサーバーが間違っているとうれしいですが、プロンプトが表示されないようにしてください。 – hawkeye

4

Kerberos領域が一致しなかった場合、「Message stream modified(41)」という例外が発生しました。レルム(システムプロパティjava.security.krb5.realm)は、大文字小文字を含めて正確に一致しなければなりません。

+0

+1あまりにも多くの時間を無駄にする前に私がこれを読んでいたら! – DaveRlz

+0

"は大文字/小文字を含め正確に一致しなければならない"感謝! –