使用java Web应用程序中的现有ldap服务器对用户进行身份验证

我正在研究一个
java Web应用程序,应使用现有的ldap服务器对其进行身份验证.我不需要从服务器获取用户的信息.我只需要检查ldap中是否存在用户名和密码.我使用tomcat服务器作为Web应用程序.

这是我发现在互联网上搜索的内容,应该包含在server.xml文件中,并在tomcat服务器中包含相关参数.我在这个特定的指南中做了一切.

资源
http://ldapwiki.willeke.com/wiki/Tomcat%20And%20LDAP

<Realm className="org.apache.catalina.realm.JNDIRealm" debug="10"
                                connectionURL="ldaps://192.168.0.8:636"
                                alternateURL="ldap://192.168.0.7:636"
                                userBase="ou=people,dc=willeke,dc=com"
                                userSearch="(cn={0})"
                                userSubtree="true"
                                userRoleName="dictcrole"
                                connectionName="cn=admin,ou=...,dc=willeke,dc=com"
                                connectionPassword="removed"
                /> 

我对xml和服务器了解不多.有人可以指导我用servlet做这个吗?

最佳答案 有几个图书馆

导入一个:在netbeans中:像那样:
How to use .jar files in NetBeans?

您可以使用:unboundid sdk

进口:

import com.unboundid.ldap.sdk.LDAPConnection;
import com.unboundid.ldap.sdk.SearchResult;
import com.unboundid.ldap.sdk.SearchScope;

你做了一个连接:

  LDAPConnection ldap = new LDAPConnection("ldap.example.com", 389);

您搜索您的用户名

    SearchResult sr = ldap.search("dc=People,dc=example,dc=com", SearchScope.SUB, "(uid=" + username + ")");
    if (sr.getEntryCount() == 0)
        System.out.println("KO");

你得到尊贵的名字:

    String dn = sr.getSearchEntries().get(0).getDN();

那么,对于密码,一个解决方案:连接:

   ldap = new LDAPConnection("ldap.example.com", 389, dn, password);

还有javax.naming

看到这个:
https://www.ldap.com/unboundid-ldap-sdk-for-java

https://code.google.com/p/ldap-sample-code/source/browse/trunk/src/main/java/samplecode/bind/SimpleBindExample.java

这也是:
How do a LDAP search/authenticate against this LDAP in Java

点赞