Java KDC-我们从哪里得到服务器的?

Java KDC-我们从哪里得到服务器的?,java,active-directory,ldap,kerberos,gssapi,Java,Active Directory,Ldap,Kerberos,Gssapi,我正在尝试使用java执行kerberos身份验证 我启用了调试 当尝试使用tgt连接到LDAP时,我得到(服务器名称已更改): getRealmFromDNS:正在尝试srv1.myserver.com getRealmFromDNS:正在尝试srv2.myserver.com getRealmFromDNS:正在尝试srv1.myserver.com getRealmFromDNS:正在尝试srv2.myserver.com 找到user@SUB.MYSERVER.COM转到krbtgt/S

我正在尝试使用java执行kerberos身份验证

我启用了调试

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

getRealmFromDNS:正在尝试srv1.myserver.com
getRealmFromDNS:正在尝试srv2.myserver.com
getRealmFromDNS:正在尝试srv1.myserver.com
getRealmFromDNS:正在尝试srv2.myserver.com
找到user@SUB.MYSERVER.COM转到krbtgt/SUB.MYSERVER。COM@SUB.MYSERVER.COM到期日:周六12月1日02:11:14
输入状态为state\u NEW的Krb5Context.initSecContext
在主题中找不到服务票证
getRealmFromDNS:正在尝试srv1.myserver.com
getRealmFromDNS:正在尝试srv2.myserver.com
>>>凭据acquireServiceCreds:同一领域
默认类型的默认etype:16 3 1。
>>>CksumType:sun.security.krb5.internal.crypto.RsaMd5CksumType
>>>EType:sun.security.krb5.internal.crypto.ArcFourHmacEType
>>>KDCAccessability:重置
使用UDP获取kdcfromdns
>>>KrbKdcReq send:kdc=server123.myserver.com。UDP:88,超时=30000,重试次数=3,#字节=1542
>>>kdc通信:kdc=server123.myserver.com。UDP:88,超时=30000,尝试=1,#字节=1542
尝试为1的SocketTimeOutException
>>>kdc通信:kdc=server123.myserver.com。UDP:88,超时=30000,尝试=2,#字节=1542
SocketTimeOutException与尝试:2
>>>kdc通信:kdc=server123.myserver.com。UDP:88,超时=30000,尝试=3,#字节=1542
SocketTimeOutException与尝试:3
>>>KrbKdcReq发送:尝试server123.myserver.com时出错。
java.net.SocketTimeoutException:接收超时
位于java.net.DualStackPlainDatagramSocketImpl.socketReceiveOrPeekData(本机方法)
位于java.net.DualStackPlainDatagramSocketImpl.receive0(未知源)
位于java.net.AbstractPlainDatagramSocketImpl.receive(未知源)
位于java.net.DatagramSocket.receive(未知源)
位于sun.security.krb5.internal.UDPClient.receive(未知源)
位于sun.security.krb5.KdcComm$KdcCommunication.run(未知源)
位于sun.security.krb5.KdcComm$KdcCommunication.run(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于sun.security.krb5.KdcComm.send(未知源)
位于sun.security.krb5.KdcComm.send(未知源)
位于sun.security.krb5.KdcComm.send(未知源)
位于sun.security.krb5.KrbTgsReq.send(未知源)
位于sun.security.krb5.KrbTgsReq.sendAndGetCreds(未知源)
位于sun.security.krb5.internal.CredentialsUtil.serviceCreds(未知来源)
位于sun.security.krb5.internal.CredentialsUtil.acquireServiceCreds(未知源)
位于sun.security.krb5.Credentials.acquireServiceCreds(未知源)
位于sun.security.jgss.krb5.Krb5Context.initSecContext(未知源)
位于sun.security.jgss.GSSContextImpl.initSecContext(未知源)
位于sun.security.jgss.GSSContextImpl.initSecContext(未知源)
位于com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(未知来源)
位于com.sun.jndi.ldap.sasl.LdapSasl.saslBind(未知源)
位于com.sun.jndi.ldap.LdapClient.authenticate(未知源)
位于com.sun.jndi.ldap.LdapCtx.connect(未知源)
位于com.sun.jndi.ldap.LdapCtx。(未知来源)
位于com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(未知源)
位于com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(未知源)
位于com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(未知源)
位于com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(未知源)
位于javax.naming.spi.NamingManager.getInitialContext(未知源)
位于javax.naming.InitialContext.getDefaultInitCtx(未知源)
位于javax.naming.InitialContext.init(未知源)
位于javax.naming.ldap.InitialLdapContext。(未知源)
在myApp.jndiation.performJndiOperation(MyTest.java:577)中
运行(MyTest.java:551)
位于java.security.AccessController.doPrivileged(本机方法)
位于javax.security.auth.Subject.doAs(未知源)
位于myApp.MyTest.main(MyTest.java:489)
>>>KDCAccessability:添加server123.myserver.com。
我的答案是:

  • 从哪里获得kdc服务器(server123.myserver.com)

  • 我能换一下吗


  • 谢谢。

    这是来自DNS(
    SRV
    Kerberos记录)。请您的管理员检查有故障的服务器,并在可能的情况下更正DNS条目。这不是Java问题。

    如果您不在Windows平台上,请搜索krb5.conf文件。有一个
    [realms]
    部分,其中提供了域和相关的KDC

    [realms]
            YOURDOMAIN.com = {
                    kdc = dc1.yourdomain.com
            }
    
    在Windows平台上,如Michael-O所述,存在特定的DNS记录

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