GSSAPI中的javax.naming.AuthenticationException

时间:2013-04-15 08:11:35

标签: java security kerberos ntlm gssapi

我正在尝试使用JAVA GSSAPI执行NTLM绑定。

我收到此错误:

  

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

我认为(不确定)过去是否奏效。为了解决其他问题,我尝试了“kinit”。从那时起停止工作。我甚至删除了缓存文件(在Windows中找不到kclear),而且,我还有这个问题。

我该如何解决?

3 个答案:

答案 0 :(得分:1)

它可以帮助你Troubleshooting

原因: Kerberos要求KDC和客户端上的时间松散同步。 (默认值在5分钟之内。)如果不是这样,您将收到此错误。

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

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

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

答案 1 :(得分:1)

好的,解决了。

我有

proxiable = true

在我的krb5文件中。

删除它并且它有效!

答案 2 :(得分:0)

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

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