Tomcat 连接 LDAP 服务器 加密

最近研究tomcat连接ldap服务器,遇到一个问题!个人感觉这个问题很容易被忽略,所以提出来,或许对大家有用!
软件环境:
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提供的文档中有( http://directory.apache.org/apacheds/1.0/42-apache-tomcat.html),可以参考。或者参考tomcat下的jsp-examples这个project。
需要注意的问题是:
apacheds中的ldap数据有些部分是加密的,尤其是 userpassword,但apacheds等ldap服务器提供的文档和demo却都是以ldap服务器里所有的数据都没加密为前提,所以很多时候我们按照文档的demo来做,却得不到正确的结果。
如果要得到正确的结果就需要确认一点是否使用加密, digest="SHA"这个属性就是用来表示使用什么加密方式的,如果没有这个属性,JDNIRealm就直接使用输入的明文和服务器上的数据比较,不然则使用 digest指定的加密方式加密输入的明文后和服务器的数据比较!
附件是我的测试代码,By the way,和ldap的连接配置也可以 单独放到特定的目录文件中,大家可以看看我的测试代码!

你可能感兴趣的:(apache,tomcat,xml,jsp,软件测试)