2012-12-03 17 views
0

我正在尝试使用java执行kerberos身份验证。KDC - 我们从哪里得到服务器?

我启用了调试。

当尝试使用TGT连接到LDAP,我得到(服务器名称已更改):

getRealmFromDNS: trying srv1.myserver.com 
getRealmFromDNS: trying srv2.myserver.com 
getRealmFromDNS: trying srv1.myserver.com 
getRealmFromDNS: trying srv2.myserver.com 
Found ticket for [email protected] to go to krbtgt/[email protected] expiring on Sat Dec 01 02:11:14 
Entered Krb5Context.initSecContext with state=STATE_NEW 
Service ticket not found in the subject 
getRealmFromDNS: trying srv1.myserver.com 
getRealmFromDNS: trying srv2.myserver.com 
>>> Credentials acquireServiceCreds: same realm 
default etypes for default_tgs_enctypes: 16 3 1. 
>>> CksumType: sun.security.krb5.internal.crypto.RsaMd5CksumType 
>>> EType: sun.security.krb5.internal.crypto.ArcFourHmacEType 
>>> KdcAccessibility: reset 
getKDCFromDNS using UDP 
>>> KrbKdcReq send: kdc=server123.myserver.com. UDP:88, timeout=30000, number of retries =3, #bytes=1542 
>>> KDCCommunication: kdc=server123.myserver.com. UDP:88, timeout=30000,Attempt=1, #bytes=1542 
SocketTimeOutException with attempt: 1 
>>> KDCCommunication: kdc=server123.myserver.com. UDP:88, timeout=30000,Attempt=2, #bytes=1542 
SocketTimeOutException with attempt: 2 
>>> KDCCommunication: kdc=server123.myserver.com. UDP:88, timeout=30000,Attempt=3, #bytes=1542 
SocketTimeOutException with attempt: 3 
>>> KrbKdcReq send: error trying server123.myserver.com. 
java.net.SocketTimeoutException: Receive timed out 
     at java.net.DualStackPlainDatagramSocketImpl.socketReceiveOrPeekData(Native Method) 
     at java.net.DualStackPlainDatagramSocketImpl.receive0(Unknown Source) 
     at java.net.AbstractPlainDatagramSocketImpl.receive(Unknown Source) 
     at java.net.DatagramSocket.receive(Unknown Source) 
     at sun.security.krb5.internal.UDPClient.receive(Unknown Source) 
     at sun.security.krb5.KdcComm$KdcCommunication.run(Unknown Source) 
     at sun.security.krb5.KdcComm$KdcCommunication.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at sun.security.krb5.KdcComm.send(Unknown Source) 
     at sun.security.krb5.KdcComm.send(Unknown Source) 
     at sun.security.krb5.KdcComm.send(Unknown Source) 
     at sun.security.krb5.KrbTgsReq.send(Unknown Source) 
     at sun.security.krb5.KrbTgsReq.sendAndGetCreds(Unknown Source) 
     at sun.security.krb5.internal.CredentialsUtil.serviceCreds(Unknown Source) 
     at sun.security.krb5.internal.CredentialsUtil.acquireServiceCreds(Unknown Source) 
     at sun.security.krb5.Credentials.acquireServiceCreds(Unknown Source) 
     at sun.security.jgss.krb5.Krb5Context.initSecContext(Unknown Source) 
     at sun.security.jgss.GSSContextImpl.initSecContext(Unknown Source) 
     at sun.security.jgss.GSSContextImpl.initSecContext(Unknown Source) 
     at com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(Unknown Source) 
     at com.sun.jndi.ldap.sasl.LdapSasl.saslBind(Unknown Source) 
     at com.sun.jndi.ldap.LdapClient.authenticate(Unknown Source) 
     at com.sun.jndi.ldap.LdapCtx.connect(Unknown Source) 
     at com.sun.jndi.ldap.LdapCtx.<init>(Unknown Source) 
     at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(Unknown Source) 
     at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(Unknown Source) 
     at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(Unknown Source) 
     at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(Unknown Source) 
     at javax.naming.spi.NamingManager.getInitialContext(Unknown Source) 
     at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source) 
     at javax.naming.InitialContext.init(Unknown Source) 
     at javax.naming.ldap.InitialLdapContext.<init>(Unknown Source) 
     at myApp.JndiAction.performJndiOperation(MyTest.java:577) 
     at myApp.JndiAction.run(MyTest.java:551) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at javax.security.auth.Subject.doAs(Unknown Source) 
     at myApp.MyTest.main(MyTest.java:489) 
>>> KdcAccessibility: add server123.myserver.com. 

我的答案是:

  1. 从那里得到了kdc服务器(server123.myserver.com)?

  2. 我可以改变呢?

谢谢。

回答

0

如果你不是在Windows平台上,搜索krb5.conf文件。有一个[realms]部分,在那里设置有域和相关联的KDC。

[realms] 
     YOURDOMAIN.com = { 
       kdc = dc1.yourdomain.com 
     } 

在Windows平台上,Michael-O指出有特定的DNS记录。

0

这是DNS(SRV记录的Kerberos)。请让管理员theck有故障的服务器,如果可能,更正DNS条目。这不是Java问题。

相关问题