GSSAPI中的javax.naming.AuthenticationException

GSSAPI中的javax.naming.AuthenticationException,java,security,kerberos,ntlm,gssapi,Java,Security,Kerberos,Ntlm,Gssapi,我正在尝试使用JavaGSSAPI执行NTLM绑定 我收到这个错误: javax.naming.AuthenticationException:GSSAPI[根异常为javax.security.sasl.SaslException:GSS启动失败[由GSSException引起:未提供有效凭据(机制级别:票证请求中的选项设置无效。(101))]] 我认为(不确定)它在过去是有效的。为了解决其他问题,我尝试了“kinit”。从那一点起,它就停止工作了。我甚至删除了缓存文件(在windows中找不

我正在尝试使用JavaGSSAPI执行NTLM绑定

我收到这个错误:

javax.naming.AuthenticationException:GSSAPI[根异常为javax.security.sasl.SaslException:GSS启动失败[由GSSException引起:未提供有效凭据(机制级别:票证请求中的选项设置无效。(101))]]

我认为(不确定)它在过去是有效的。为了解决其他问题,我尝试了“kinit”。从那一点起,它就停止工作了。我甚至删除了缓存文件(在windows中找不到kclear),但仍然存在这个问题

我该如何解决它呢?

希望它能从以下方面帮助您:

原因:Kerberos要求KDC和客户端上的时间进行松散同步。(默认值为5分钟内。)如果不是这样,则会出现此错误

解决方案:同步时钟(或让系统管理员同步)

原因:如果未获得有效的Kerberos凭据,则可能发生这种情况。特别是,如果您希望底层机制获取凭据,但忘记通过将
javax.security.auth.UseSubjectCredOnly
系统属性值设置为false(例如在执行命令中通过-Djavax.security.auth.UseSubjectCredOnly=false)来指示这一点,则会发生这种情况

解决方案:如果希望底层机制获取凭据,而不是希望应用程序或包装程序(如一些教程使用的登录实用程序)使用JAAS执行身份验证,请确保将
javax.security.auth.UseSubjectCredOnly
系统属性值设置为false。

确定,解决了

我有

可代理=真

在我的krb5文件中

删除它,它的工作

对于未创建为可转发的Kerberos票证,我遇到了相同的问题(完全相同的Java错误堆栈)


Kerbros票证更新/监控过程是用Perl编写的,使用了Authen::Krb5::Easy Perl模块,忽略了/etc/Krb5.conf“forwardable=true”设置。

谢谢。时钟似乎是同步的,我将此标志设置为false。更多的想法?