我正在尝试使用 Tomcat 7 获取 LDAP身份验证。
我在server.xml
<Context path="/WebApp" reloadable="false" docBase="E:\ESS\Tomcat 7\webapps\WebApp">
<ResourceLink name="mail/WebAPPMS" type="javax.mail.Session" global="mail_Session"/>
<Manager checkInterval="60" debug="99"/>
<ResourceLink name="jdbc/WebAppDS" type="javax.sql.DataSource" global="WebAppDataSource"/>
<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99" connectionURL="ldap://company.com:3268" userBase="DC=company,DC=com" userSubtree="true" userSearch="(CN={0})"/>
<ResourceLink name="directory/WebAppReports" type="java.lang.String" global="SchemaReportsDirectory"/>
</Context>
现在在我们的 LDAP 中,不允许使用匿名绑定。所以我需要在搜索和验证之前绑定。
但是,我无法通过connectionName
,connectionPassword
和userPassword
,因为它会在Comparison mode
中创建身份验证, LDAP
使用上面的配置我收到以下错误:
2014年5月8日下午1:25:44 org.apache.catalina.realm.JNDIRealm 验证SEVERE:执行身份验证的异常 javax.naming.NamingException:[LDAP:错误代码1 - 00000000:LdapErr: DSID-0C090627,评论:为了执行此操作a 必须在连接上完成成功绑定。,data 0,vece]; 剩下的名字'DC =公司,DC = com'at com.sun.jndi.ldap.LdapCtx.mapErrorCode(未知来源)at com.sun.jndi.ldap.LdapCtx.processReturnCode(未知来源)at at com.sun.jndi.ldap.LdapCtx.processReturnCode(未知来源)at at com.sun.jndi.ldap.LdapCtx.searchAux(未知来源)at com.sun.jndi.ldap.LdapCtx.c_search(未知来源)at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(未知来源) 在com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(未知 来源)at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(未知 来自)javax.naming.directory.InitialDirContext.search(未知 来源)at org.apache.catalina.realm.JNDIRealm.getUserBySearch(JNDIRealm.java:1446) 在org.apache.catalina.realm.JNDIRealm.getUser(JNDIRealm.java:1297) 在org.apache.catalina.realm.JNDIRealm.getUser(JNDIRealm.java:1253) 在 org.apache.catalina.realm.JNDIRealm.authenticate(JNDIRealm.java:1194) 在 org.apache.catalina.realm.JNDIRealm.authenticate(JNDIRealm.java:1052) 在 org.apache.catalina.authenticator.BasicAuthenticator.authenticate(BasicAuthenticator.java:164) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:573) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) 在 org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:607) 在 org.apache.tomcat.util.net.AprEndpoint $ SocketProcessor.doRun(AprEndpoint.java:2441) 在 org.apache.tomcat.util.net.AprEndpoint $ SocketProcessor.run(AprEndpoint.java:2430) 在java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(未知 来自java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知 来自java.lang.Thread.run(未知来源)
这显然意味着 LDAP 未连接,我需要在进行身份验证之前进行绑定。
搜索网页后,我发现了这一点,但我不知道如何创建自定义域:
答案 0 :(得分:0)
我们在此处发布了Tomcat and LDAP
所使用的内容BTW:你永远不应该使用比较模式。凭证的比较通常绕过LDAP目录中的安全机制。可以绕过入侵者检测,过期密码(和登录)等安全机制。