Windows下OpenLDAP的安装及使用(二)

3 篇文章 0 订阅

下面讲述 Tomcat 和 OpenLDAP 配置,限制用户访问

1.Tomcat 服务器配置

每一个应用可以在各自的 <Context> 元素中配置自己的 Realm; 这个 realm 仅仅是对该应用是有效的. 然而, realm 也能配置到 <Engine><Host> 级别上. 它们对 realm 的行为和范围有影响. 这样允许一个 realm 很容易的在多个应用间共享.

这里有一个 server.xml 的realm, 它允许应用连接到 OpenLDAP.

<RealmclassName="org.apache.catalina.realm.JNDIRealm"

   debug="99"

   connectionName="cn=Manager,dc=mycompany,dc=com"

   connectionPassword="secret"

   connectionURL="ldap://localhost:389"

   roleBase="ou=roles,dc=mycompany,dc=com"

   roleName="cn"

   roleSearch="(uniqueMember={0})"

   roleSubtree="false"

   userSearch="(uid={0})"

    userPassword="userPassword"

   userPattern="uid={0},ou=people,dc=mycompany,dc=com"

/>

使用方法:在D盘建立一个文件夹用于存放相应的文件比如:D:\LDAPTest

将Tomcat文件包放入该文件目录D:\LDAPTest\apache-tomcat-6.0.30

更改D:\LDAPTest\apache-tomcat-6.0.30\conf目录下server.xml

将以上代码加入到

<body>

    <formmethod="POST" action="j_security_check">

        <inputtype="text" name="j_username">

        <br>

        <inputtype="password" name="j_password">

        <br>

        <inputtype="submit">

    </form>

</body>

必须参考新的 OpenLDAP realm 来更新web.xml 文件, 并在其中使用 LDAP 指定的角色. 应用还需要让对login.jsp 页面的访问权限是公开的; 不然的话, 没有用户能登陆.

要告知应用什么角色能访问什么资源, 就要在应用 (或安全约束) 中用到 URL 映射. 这种映射既可以是一个文件名 (/admin.jsp) 也可以是一个路径 (/jsp/* 将保护jsp 目录中的任何东西). 下面的 XML 表示列出的这两个.jsp 文件不受到保护.

<security-constraint>

   <web-resource-collection>

       <web-resource-name>Public Area</web-resource-name>

        <!--Define the context-relative URL(s) to be protected -->

       <url-pattern>/index.jsp</url-pattern>

       <url-pattern>/login.jsp</url-pattern>

    </web-resource-collection>

</security-constraint>

为什么这个代码会标记其他的 .jsp 文件为不受保护呢? 这是由于未列出的不受保护, 而非列出来的才不受保护. 下面的 web.xml 片断标明了 user.jsp 资源是受保护的, 并指定了什么角色可访问它.

<security-constraint>

   <web-resource-collection>

       <web-resource-name>Protected Area</web-resource-name>

        <!--Define the context-relative URL(s) to be protected -->

       <url-pattern>/user.jsp</url-pattern>

   </web-resource-collection>

   <auth-constraint>

    <!-- Anyonewith one of the listed roles may access this area -->

        <role-name>TestUsers</role-name>

       <role-name>Special Users</role-name>

       <role-name>Admin Users</role-name>

    </auth-constraint>

</security-constraint>

注意到那个受保护资源有还有另一个节点配置, <auth-constraint>, 它指定了什么应用角色可以访问上面的资源. 假如存在 <auth-constraint> 配置, 资源就会是安全的. 否则, 它们就是公开的. 除非整个应用都是受保护的 (例如, <url-pattern>/</url-pattern>), 公开的权限约束完全是多余.

欲配置 web.xml 文件利用前面创建的 login.jsp , 要添加下面的代码到 web.xml 文件中.

<!--  usesform-based authentication -->

<login-config>

   <auth-method>FORM</auth-method>

   <form-login-config>

       <form-login-page>/login.jsp</form-login-page>

       <form-error-page>/fail_login.html</form-error-page>

   </form-login-config>

</login-config>

最后是对 web.xml 的一个附加配置步骤: 应用需要被知会我们要用到哪些角色.

<!-- Security roles referenced by this web application-->

<security-role>

   <role-name>Test Users</role-name>

</security-role>

<security-role>

   <role-name>Special Users</role-name>

</security-role>

<security-role>

   <role-name>Admin Users</role-name>

</security-role>

现在 Tomcat 已被配置为使用 OpenLDAP 并且我们的应用也对 web.xml 文件进行了正确的设置. 当用户首次被导航到 <security-constraint> 中列出的任何资源时 (只要不是公开的资源) , 服务器会自动显示login.jsp 页面要求用户验证. 假如用户验证失败,将会显示在 <form-error-page> 中指定的页面. 要是验证用户是通过了, 但是未授权访问某个资源 (比如, 不是某个角色的成员), 服务器会返回一个 403 错误页. 想要的话, 错误页可以在web.xml 文件中定制, 使用<error-code> 元素.

注,web.xml 中的元素有一个特定的顺序 (定义在 DTD 文件中), 所以你应该看看例子代码 中完整的web.xml文件. 尤其是<login-config><security-role>中的元素顺序.

现在用户可以登陆了, 但是该如何登出呢? 可以写代码来让用户的会话失效, 或者我们可以使用 Apache Jakarta 项目提供的便利的会话标签库.

3.Jakarta 相应标签库

通过加入 logout.jsp 到应用中并使用 Apache Jakarta Project 的会话标签库 , 我们能在不写任何定制代码情况下就失效掉的用户 (在实际的应用中, 你也许还需为清除一个用户会话做更多一些事情, 你也可能不怎么满意这么做).

<body>

   <sess:invalidate/>

    You are nowlogged out<br>

    <ahref="index.jsp">Return to index</a>

</body>

一旦包含用 <sess:invalidate/> 标签的 JSP 页面显示之后, 用户会话便被移除, 该用户被有效的注销掉了. 简单的放置一个链接指向logout.jsp 页面, 就能让用户导航该页, 这足以应付简单的应用. 另, 除会话标签库外, 我们还能利用 request 标签库来定制化基于用户和角色 JSP 页面的内容.

<req:isUserInRole role="Admin Users">

    The remote useris in role "Admin Users".<br />

</req:isUserInRole>

前述的 JSP 片断只有在当前用户在请求的角色中时才显示内容. 要验证角色安全性的行为, 可以用 JXplorer 快速的从角色中添加和移除用户.

4.使用web应该测试权限

方法:将配置好的ldap应用放入D:\LDAPTest\apache-tomcat-6.0.30\webapps

目录下。并启动Tomcat服务。

在地址栏输入:http://localhost:8080/ldap/index.jsp
这里写图片描述
以上就是关于访问权限的配置,有一部分还是借鉴了别人的,如有不足之处,还请批评改正。谢谢~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在 Windows安装 OpenLDAP 的步骤: 1. 下载 OpenLDAP for Windows 安装包,可以从官方网站下载:https://www.openldap.org/software/download/ 2. 解压缩安装包到本地目录,例如 C:\OpenLDAP。 3. 在 Windows 系统中创建一个新的环境变量 OPENLDAP_HOME,并将其值设置为 OpenLDAP 安装目录的路径,例如 C:\OpenLDAP。 4. 将 OpenLDAP 的 bin 目录添加到系统的 PATH 环境变量中,例如 C:\OpenLDAP\bin。 5. 配置 OpenLDAP: (1) 在 OpenLDAP 安装目录下创建一个新的文件夹,例如 C:\OpenLDAP\etc\openldap\。 (2) 在该文件夹中创建一个新的文件,例如 slapd.conf。 (3) 编辑 slapd.conf 文件,配置 OpenLDAP 的基本设置,例如监听地址、端口、数据存储路径等。 6. 初始化 OpenLDAP 数据库: (1) 打开命令提示符,切换到 OpenLDAP 安装目录的 bin 目录下。 (2) 执行如下命令初始化数据库: slapd.exe -f ..\etc\openldap\slapd.conf -h "ldap://localhost:389" -d 1 7. 启动 OpenLDAP 服务: (1) 打开命令提示符,切换到 OpenLDAP 安装目录的 bin 目录下。 (2) 执行如下命令启动服务: slapd.exe -d 1 8. 验证 OpenLDAP 是否正常工作: (1) 打开命令提示符,切换到 OpenLDAP 安装目录的 bin 目录下。 (2) 执行如下命令查询管理员账号: ldapsearch.exe -x -b "dc=my-domain,dc=com" -D "cn=admin,dc=my-domain,dc=com" -w "admin" 如果能够成功查询到管理员账号,则说明 OpenLDAP 已经成功安装并运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值