2013-07-15 39 views
1

我GSSAPI的成功合作与JAVA 5. JAVA 6和7 InitialLdapContext调用失败与以下堆栈跟踪:InitialLdapContext失败与Java 6和Java 7

>>>KRBError: 
    sTime is Fri Jun 14 13:40:01 CEST 2013 1371210001000 
    suSec is 948732 
    error code is 7 
    error Message is Server not found in Kerberos database 
    realm is DE.XXX.NET 
    sname is ldap/yyy.de.xxx.net 
    msgType is 30 
KrbException: Server not found in Kerberos database (7) 
    at sun.security.krb5.KrbTgsRep.<init>(Unknown Source) 
    at sun.security.krb5.KrbTgsReq.getReply(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 kerberos.UserRoles2.getUserRoles(UserRoles2.java:27) 
    at kerberos.Server$2.run(Server.java:240) 
    at kerberos.Server$2.run(Server.java:1) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Unknown Source) 
    at kerberos.Server.getRoles(Server.java:233) 
    at kerberos.Server.main(Server.java:95) 
Caused by: KrbException: Identifier doesn't match expected value (906) 
    at sun.security.krb5.internal.KDCRep.init(Unknown Source) 
    at sun.security.krb5.internal.TGSRep.init(Unknown Source) 
    at sun.security.krb5.internal.TGSRep.<init>(Unknown Source) 
    ... 29 more 

Problem searching directory: javax.naming.AuthenticationException: GSSAPI [Root exception is javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Server not found in Kerberos database (7))]] 

有谁有一个想法是什么北京时间去在Java 6或7错误?

的ktab文件与JRE 7

的ktab工具创建的 “C:\ Program Files文件\的Java \ jre7 \ BIN \ ktab.exe” -a [email protected]密码-k我.keytab -n “c:\ Program Files \ Java \ jre7 \ bin \

请记住:如果我使用Java 5,InitialLdapContext调用按预期工作。

在此先感谢

迈克尔

+0

您是否检查过SPN真的存在? –

回答

1

问题就解决了。

我为ldap_url属性使用了别名dns名称。在Java 1.5中,别名dns名称已解析为真正的dns名称。在Java 1.6和1.7中,解决不会发生。

更改为真正的DNS名称解决了问题。