最近研究tomcat连接ldap服务器,遇到一个问题!个人感觉这个问题很容易被忽略,所以提出来,或许对大家有用!
软件环境:
tomcat5.5.27
apacheds1.0
我通过下面的xml连接ldap
这个代码apacheds提供的文档中有([url]http://directory.apache.org/apacheds/1.0/42-apache-tomcat.html[/url]),可以参考。或者参考tomcat下的jsp-examples这个project。
需要注意的问题是:
apacheds中的ldap数据有些部分是加密的,尤其是 userpassword,但apacheds等ldap服务器提供的文档和demo却都是以ldap服务器里所有的数据都没加密为前提,所以很多时候我们按照文档的demo来做,却得不到正确的结果。
如果要得到正确的结果就需要确认一点是否使用加密,[color=red]digest="SHA"[/color]这个属性就是用来表示使用什么加密方式的,如果没有这个属性,JDNIRealm就直接使用输入的明文和服务器上的数据比较,不然则使用[color=red]digest[/color]指定的加密方式加密输入的明文后和服务器的数据比较!
附件是我的测试代码,By the way,和ldap的连接配置也可以[color=red]单独放到特定的目录文件中[/color],大家可以看看我的测试代码!
软件环境:
tomcat5.5.27
apacheds1.0
我通过下面的xml连接ldap
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/Security/*" >
<Realm className="org.apache.catalina.realm.JNDIRealm"
digest="SHA"
debug="99"
connectionName="uid=admin,ou=system"
connectionPassword="secret"
connectionURL="ldap://127.0.0.1:10389"
roleBase="ou=crews,ou=groups,o=sevenSeas"
roleName="cn"
roleSearch="(uniqueMember={0})"
roleSubtree="false"
userPassword="userPassword"
userPattern="cn={0},ou=people,o=sevenSeas"
/>
</Context>
这个代码apacheds提供的文档中有([url]http://directory.apache.org/apacheds/1.0/42-apache-tomcat.html[/url]),可以参考。或者参考tomcat下的jsp-examples这个project。
需要注意的问题是:
apacheds中的ldap数据有些部分是加密的,尤其是 userpassword,但apacheds等ldap服务器提供的文档和demo却都是以ldap服务器里所有的数据都没加密为前提,所以很多时候我们按照文档的demo来做,却得不到正确的结果。
如果要得到正确的结果就需要确认一点是否使用加密,[color=red]digest="SHA"[/color]这个属性就是用来表示使用什么加密方式的,如果没有这个属性,JDNIRealm就直接使用输入的明文和服务器上的数据比较,不然则使用[color=red]digest[/color]指定的加密方式加密输入的明文后和服务器的数据比较!
附件是我的测试代码,By the way,和ldap的连接配置也可以[color=red]单独放到特定的目录文件中[/color],大家可以看看我的测试代码!