服务器选择了tomcat6.0,LDAP选择了OpenDS2.2.0,JDK1.6
由于要的是绿色环境,那么把这些东西全部放在一个文件夹下,希望如果要把环境装到别的机器上,只用把这个文件夹COPY走就行。
目录结构如图:
因此要先配置一下TOMCAT,让tomcat去一个相对路径找JDK,在TOMCAT_HOME/bin 下编辑catalina.bat。在里边加上一句
set JAVA_HOME=..\..\jdk
安装OpenDS的步骤:http://www.opends.org/ 通过Java Web Start执行QuickSetup(必须要有JDK,在windows上可行,在Ubuntu上没执行)。
OpenDS服务器配置好以后,双击OpenDS_HOME/bat/control-panel.bat
打开控制台,启动服务。
把一下内容保存成一个ldif文件,如E:\environment\OpenDS\ldif\duke.ldif
# add group dn: ou=Groups,dc=example,dc=com changetype: add ou: Groups description: Group ou objectClass: top objectClass: organizationalUnit # add people ou dn: ou=People,dc=example,dc=com changetype: add ou: People description: People objectClass: top objectClass: organizationalUnit # add an authorized user (belongs to the group secure) dn: uid=duke,ou=People,dc=example,dc=com changetype: add objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson uid: duke cn: The Duke sn: Duke givenName: The userPassword: password # unauthorized user dn: uid=noaccess,ou=People,dc=example,dc=com changetype: add objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson uid: noaccess cn: No Access sn: access givenName: no userPassword: noaccess # add user to the webapp group dn: cn=secure,ou=Groups,dc=example,dc=com changetype: add objectClass: top objectClass: groupOfUniqueNames uniqueMember: uid=duke,ou=People,dc=example,dc=com cn: secure
然后打开CMD,到Opends\bin下输入ldapmodify -p 389 -a -D "cn=Directory Manager" -w password -f E:\environment\OpenDS\ldif\duke.ldif
这样就为OpenDS添加了一个权限组:secure 两个用户:duke、noaccess ,并且在secure这个权限组里添加了duke。
可以在控制界面中,在People下添加用户,比如"boris",添加时要选择属性命名,选择uid。然后在secure组成员里添加uid=boris,ou=People,dc=example,dc=com
这样,boris就也有了权限。
现在,要在自己的web project中调用OpenDS的权限验证,先拿一个最简单的project试验出来再说。
首先要修改tomcat的server.xml
在<Engine></Engine>中间加入
<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99" connectionName="cn=Directory Manager" connectionPassword="boris" connectionURL="ldap://localhost:389" userPattern="uid={0},ou=people,dc=example,dc=com" roleBase="ou=groups,dc=example,dc=com" roleName="cn" roleSearch="(uniqueMember={0})"/>
第5行中的userPattern定义了验证用户的格式,这里是以uid开头。但是在OpenDS建立用户的时候,默认的是以cn开头的,建立时需要注意。
在TOMCAT_HOME/webapps下建立一个最简单的web project,只有一个index.html 内容是hello。
然后修改WEB-INF下的web.xml 如下:
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xsi="http://www.w3.org/2001/XMLSchema-instance" schemalocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <security-role> <role-name>secure</role-name> </security-role> <!-- grant access to all users that possess the role 'secure' and deny all others --> <security-constraint> <web-resource-collection> <web-resource-name>opendsauthtest</web-resource-name> <url-pattern>/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>secure</role-name> </auth-constraint> </security-constraint> <!-- declare the app uses FORM based authentication using your newly created OpenDS realm --> <login-config> <auth-method>BASIC</auth-method> <realm-name>OpenDS</realm-name> </login-config> </web-app>
这里并不完全理解,主要注意<role-name>secure</role-name>,这就是要连接OpenDS的权限组的名称。
做完这些,启动tomcat 输入http://localhost:8080/test
弹出输入密码的页面,输入boris boris 确定,进入到index.html页面。
《利用OpenDS统一管理部门内部的账号(2)》:
http://borissun.iteye.com/admin/blogs/781492