gpt4 book ai didi

java - Tomcat 7 中的 LDAP 身份验证,如何在 server.xml 中绑定(bind) LDAP?

转载 作者:行者123 更新时间:2023-11-28 22:57:59 24 4
gpt4 key购买 nike

我正在尝试使用 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 中,匿名绑定(bind)是不允许的。所以我需要在搜索和验证之前绑定(bind)。

但是,我无法传递 connectionNameconnectionPassworduserPassword,因为它会在比较模式 中创建身份验证,这是 LDAP 不允许的。

使用上面的配置我得到以下错误:

May 8, 2014 1:25:44 PM org.apache.catalina.realm.JNDIRealm authenticate SEVERE: Exception performing authentication javax.naming.NamingException: [LDAP: error code 1 - 00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece ]; remaining name 'DC=company,DC=com' at com.sun.jndi.ldap.LdapCtx.mapErrorCode(Unknown Source) at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source) at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source) at com.sun.jndi.ldap.LdapCtx.searchAux(Unknown Source) at com.sun.jndi.ldap.LdapCtx.c_search(Unknown Source) at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(Unknown Source) at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source) at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source) at javax.naming.directory.InitialDirContext.search(Unknown Source) at org.apache.catalina.realm.JNDIRealm.getUserBySearch(JNDIRealm.java:1446) at org.apache.catalina.realm.JNDIRealm.getUser(JNDIRealm.java:1297) at org.apache.catalina.realm.JNDIRealm.getUser(JNDIRealm.java:1253) at org.apache.catalina.realm.JNDIRealm.authenticate(JNDIRealm.java:1194) at org.apache.catalina.realm.JNDIRealm.authenticate(JNDIRealm.java:1052) at org.apache.catalina.authenticator.BasicAuthenticator.authenticate(BasicAuthenticator.java:164) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:573) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2441) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2430) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

这显然意味着 LDAP 未连接,我需要在进行身份验证之前进行绑定(bind)。

在网上搜索后,我找到了这个,但我不知道如何创建自定义领域:

Integrating AD with web application running on Tomcat

最佳答案

我们在这里发布了我们用于 Tomcat and LDAP 的内容

顺便说一句:你不应该使用比较模式。凭据比较通常会绕过 LDAP 目录中的安全机制。可能会绕过入侵者检测、过期密码(和登录名)等安全机制。

关于java - Tomcat 7 中的 LDAP 身份验证,如何在 server.xml 中绑定(bind) LDAP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23561352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com