利用OpenDS统一管理部门内部的账号(1)

现在要为部门搭建一个绿色的环境,将JIRA、WiKi用统一的账号管理。
服务器选择了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

猜你喜欢

转载自borissun.iteye.com/blog/776106