连接到kerberos javax.security.auth.login.login时出错异常:无法从System.in读取

连接到kerberos javax.security.auth.login.login时出错异常:无法从System.in读取,java,kerberos,spnego,Java,Kerberos,Spnego,您好,当我从unix服务器连接到kerberos时,在本地出现以下错误,尽管一切正常。远程设备有jdk 1.7.045。请帮助 我的login.conf是 tom-sync{ com.sun.security.auth.module.Krb5LoginModule required storeKey=true useKeyTab=true doNotPrompt=true keyTab="///apps/tom/resources/kb/tom_user.

您好,当我从unix服务器连接到kerberos时,在本地出现以下错误,尽管一切正常。远程设备有jdk 1.7.045。请帮助

我的login.conf是

tom-sync{
    com.sun.security.auth.module.Krb5LoginModule required
    storeKey=true
    useKeyTab=true
    doNotPrompt=true
    keyTab="///apps/tom/resources/kb/tom_user.keytab"
    principal="tom@COMSI.COM"
    isInitiator=false;
};
例外情况

Caused by: org.ietf.jgss.GSSException: No valid credentials provided (Mechanism level: Attempt to obtain new INITIATE credentials failed! (null))
       at sun.security.jgss.krb5.Krb5InitCredential.getTgt(Krb5InitCredential.java:351) ~[?:1.7.0_45]
       at sun.security.jgss.krb5.Krb5InitCredential.getInstance(Krb5InitCredential.java:145) ~[?:1.7.0_45]
       at sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Krb5MechFactory.java:121) ~[?:1.7.0_45]
       at sun.security.jgss.GSSManagerImpl.getCredentialElement(GSSManagerImpl.java:192) ~[?:1.7.0_45]
       at sun.security.jgss.spnego.SpNegoMechFactory.getCredentialElement(SpNegoMechFactory.java:141) ~[?:1.7.0_45]
       at sun.security.jgss.GSSManagerImpl.getCredentialElement(GSSManagerImpl.java:192) ~[?:1.7.0_45]
       at sun.security.jgss.GSSCredentialImpl.add(GSSCredentialImpl.java:406) ~[?:1.7.0_45]
       at sun.security.jgss.GSSCredentialImpl.<init>(GSSCredentialImpl.java:60) ~[?:1.7.0_45]
       at sun.security.jgss.GSSManagerImpl.createCredential(GSSManagerImpl.java:153) ~[?:1.7.0_45]
       at net.sourceforge.spnego.SpnegoProvider$1.run(SpnegoProvider.java:171) ~[spnego-7.0.jar:?]
       at net.sourceforge.spnego.SpnegoProvider$1.run(SpnegoProvider.java:1) ~[spnego-7.0.jar:?]
       at java.security.AccessController.doPrivileged(Native Method) ~[?:1.7.0_45]
       at javax.security.auth.Subject.doAs(Subject.java:415) ~[?:1.7.0_45]
       at net.sourceforge.spnego.SpnegoProvider.getClientCredential(SpnegoProvider.java:179) ~[spnego-7.0.jar:?]
       at net.sourceforge.spnego.SpnegoHttpURLConnection.getGSSContext(SpnegoHttpURLConnection.java:525) ~[spnego-7.0.jar:?]
       at net.sourceforge.spnego.SpnegoHttpURLConnection.connect(SpnegoHttpURLConnection.java:329) ~[spnego-7.0.jar:?]
       ... 82 more
Caused by: javax.security.auth.login.LoginException: Cannot read from System.in
       at com.sun.security.auth.module.Krb5LoginModule.promptForName(Krb5LoginModule.java:824) ~[?:1.7.0_45]
       at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:671) ~[?:1.7.0_45]
       at com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:584) ~[?:1.7.0_45]
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_45]
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_45]
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_45]
       at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_45]
       at javax.security.auth.login.LoginContext.invoke(LoginContext.java:784) ~[?:1.7.0_45]
       at javax.security.auth.login.LoginContext.access$000(LoginContext.java:203) ~[?:1.7.0_45]
       at javax.security.auth.login.LoginContext$5.run(LoginContext.java:721) ~[?:1.7.0_45]
       at javax.security.auth.login.LoginContext$5.run(LoginContext.java:719) ~[?:1.7.0_45]
       at java.security.AccessController.doPrivileged(Native Method) ~[?:1.7.0_45]
       at javax.security.auth.login.LoginContext.invokeCreatorPriv(LoginContext.java:718) ~[?:1.7.0_45]
       at javax.security.auth.login.LoginContext.login(LoginContext.java:590) ~[?:1.7.0_45]
原因:org.ietf.jgss.gsx异常:未提供有效凭据(机制级别:尝试获取新的启动凭据失败!(null))
在sun.security.jgss.krb5.Krb5InitCredential.getTgt(Krb5InitCredential.java:351)~[?:1.7.045]
在sun.security.jgss.krb5.Krb5InitCredential.getInstance(Krb5InitCredential.java:145)~[?:1.7.045]
在sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Krb5MechFactory.java:121)~[?:1.7.0_45]
在sun.security.jgss.GSSManagerImpl.getCredentialElement(GSSManagerImpl.java:192)~[?:1.7.045]
在sun.security.jgss.spnego.SpNegoMechFactory.getCredentialElement(SpNegoMechFactory.java:141)~[?:1.7.0_45]
在sun.security.jgss.GSSManagerImpl.getCredentialElement(GSSManagerImpl.java:192)~[?:1.7.045]
在sun.security.jgss.GSSCredentialImpl.add(GSSCredentialImpl.java:406)~[?:1.7.045]
在sun.security.jgss.GSSCredentialImpl.(GSSCredentialImpl.java:60)~[?:1.7.045]
在sun.security.jgss.GSSManagerImpl.createCredential(GSSManagerImpl.java:153)~[?:1.7.045]
在net.sourceforge.spnego.SpnegoProvider$1.run(SpnegoProvider.java:171)~[spnego-7.0.jar:?]
在net.sourceforge.spnego.SpnegoProvider$1.run(SpnegoProvider.java:1)~[spnego-7.0.jar:?]
在java.security.AccessController.doPrivileged(本机方法)~[?:1.7.0_45]
在javax.security.auth.Subject.doAs(Subject.java:415)~[?:1.7.0_45]
在net.sourceforge.spnego.SpnegoProvider.getClientCredential(SpnegoProvider.java:179)~[spnego-7.0.jar:?]
在net.sourceforge.spnego.spnegohtpurlconnection.getGSSContext(spnegohtpurlconnection.java:525)~[spnego-7.0.jar:?]
在net.sourceforge.spnego.spnegohtpurlconnection.connect(spnegohtpurlconnection.java:329)~[spnego-7.0.jar:?]
... 82多
原因:javax.security.auth.login.login异常:无法从System.in读取
在com.sun.security.auth.module.Krb5LoginModule.promptForName(Krb5LoginModule.java:824)~[?:1.7.045]
在com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:671)~[?:1.7.045]
在com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:584)~[?:1.7.045]
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)~[?:1.7.0_45]
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)~[?:1.7.045]
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)~[?:1.7.045]
在java.lang.reflect.Method.invoke(Method.java:606)~[?:1.7.0_45]
在javax.security.auth.login.LoginContext.invoke(LoginContext.java:784)~[?:1.7.045]
在javax.security.auth.login.LoginContext.access$000(LoginContext.java:203)~[?:1.7.0\u 45]
在javax.security.auth.login.LoginContext$5.run(LoginContext.java:721)~[?:1.7.045]
在javax.security.auth.login.LoginContext$5.run(LoginContext.java:719)~[?:1.7.045]
在java.security.AccessController.doPrivileged(本机方法)~[?:1.7.0_45]
在javax.security.auth.login.LoginContext.invokeCreatorPriv(LoginContext.java:718)~[?:1.7.0\u 45]
在javax.security.auth.login.LoginContext.login(LoginContext.java:590)~[?:1.7.0\u 45]

///apps/tom/resources/kb/tom\u user.keytab
不是有效的路径。@Michael-O我试图在路径上执行ls,但它确实存在于我的unix框中。你的意思是我应该以/apps/tom/resources/kb/tomu用户的身份给出路径。keytab@Michael-O重新启动后,我改为/apps/tom/resources/kb/tom_user.keytab现在似乎可以工作。jdk1.7的原因与jdk1.7中的配置相同吗?谢谢,希望这就是问题所在