我的Mongo服务器应该正确设置,因为我可以使用GSSAPI机制与客户端进行查询。
根据文档,Java Driver的Kerberos身份验证可以如此简单
credentialList.add(MongoCredential.createGSSAPICredential("people/myhost.com@EXAMPLE.COM"));
我使用的校长
为确保读取krb5.ini / conf,我手动设置系统属性java.security.krb5.conf = C:/Windows/krb5.conf
在我设置属性javax.security.auth.useSubjectCredsOnly
之前,GSSAPIAuthenticator.createSaslClient()
捕获了GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)
的例外。
我设置了属性javax.security.auth.useSubjectCredsOnly=false
后,InternalStreamConnection.open()
抓住了throwable:java.lang.SecurityException: Unable to locate a login configuration
我真的很困惑。我以为它正在使用KRB5CCNAME下指定的票证缓存。如果我使用jaas配置,我应该指定什么名称?
Name {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="D:\\Kerberos\\people.keytab"
useTicketCache=false;
};
我用随机名称设置它并开始抱怨GSSException: No valid credentials provided (Mechanism level: Attempt to obtain new INITIATE credentials failed! (null))
。
你们可以帮帮我吗?我还可以在这里尝试一下,或者在这种情况下我可以启用哪些更有用和详细的日志?
答案 0 :(得分:1)
根据设计,安全错误消息含糊不清: - /
但是有一个很好的“security trace flag”属性可以帮助您调试GSSAPI配置问题:
-Djava.security.debug=gssloginconfig,configfile,configparser,logincontext