`
dacoolbaby
  • 浏览: 1262536 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用Tomcat验证LDAP by openDJ

    博客分类:
  • LDAP
阅读更多

在单位的应用系统,几乎全部都是使用LDAP来进行身份认证的。
所以,我也在家里自己配了一下,感觉还行。

首先,介绍一下什么是LDAP。
其实我完全不知道什么是LDAP,后来发现,其实就是个身份管理数据库,不过只对内部实现。
比如,我们使用FTP服务器的时候,需要输入账号密码,这个就可以绑定LDAP认证。
说白了,LDAP就是一个存储身份数据的数据库。
你登陆的系统只要和这个数据库连上了,就可以用同一个账号密码登陆了。(为啥不用Portal呢?)

首先,去这个地址下载openDJ,一个开源的LDAP服务器。
http://www.forgerock.org/opendj.html
然后,如果你和我一样就是使用windows,那么下载zip,点击setup.bat。

然后下一步下一步就可以了。
(。。。本来想搞点截图的,没这个功能啊。扔到附件上吧。)

选择这将是一台独立的服务器。


按照Example使用。

安装好以后,启动服务。也可以选择导入官方已有的配置文件ldif。


登陆后可以看到openDJ相关的基本信息和运行状态。

点击控制面板的“管理条目”,便可以打开创建时的基dn的管理界面。


新建一个组织单元(OrganizationUnit)People

在里面创建如下用户,密码自理。

dn: uid=bjensen,ou=People,dc=example,dc=com
uid: bjensen
cn: Barbara Jensen
cn: Babs Jensen
mail: bjensen@example.com

 


下面创建一个tomcat的分组,作为最终登陆的角色。

在tomcat里面。找到conf文件夹。 
注释掉

 

<!--
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
    description="User database that can be updated and saved"
    factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
    pathname="conf/tomcat-users.xml" />
-->

还有这个

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
       resourceName="UserDatabase"/>

然后插入

<Realm   className="org.apache.catalina.realm.JNDIRealm"
     connectionURL="ldap://localhost:1389"
       userPattern="uid={0},ou=people,dc=example,dc=com"
      userRoleName="isMemberOf"
          roleBase="ou=groups,dc=example,dc=com"
          roleName="cn"
        roleSearch="(uniqueMember={0})"
/>

 


至于以上字段有什么含义嘛。。

自行理解吧。。其实,在Apache Tomcat的网站上面有详细解释的。

英语不好?百度吧。。。这里略过。

 

还有一个地方要更改的,就是tomcat-users.xml
这里就说一句话,把原本注释的部分,取消注释就是了。

tomcat-users.xml对tomcat来说就是一种身份验证。


完成后,来准备用户登录和登录失败的文件:

我们这里假设让用户通过表单的方式通过验证,需要2 个 html 文件: login.html和 loginerr.html。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Login Page</title>
</head>
<body>
<h1>Login to My Web Application</h1>
<p>
If you have been issued a username and password, key them in here now!
</p>
<form method="POST" action="j_security_check">
Username : <input type="text" size="15" maxlength="25" name="j_username"><br><br>
Password : <input type="password" size="15" maxlength="25" name="j_password"><br><br>
<input value="Login" type="submit">&nbsp;&nbsp;&nbsp;&nbsp;<input value="Clear" type="reset">
</form>
</body>
</html>
 还有错误页面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Authentication Error!</title>
</head>
<body>
<h1>Authentication Error!</h1>
<p>
Oops! You either keyed in the wrong username or password.
</p>
<a href="javascript:history.back(1)">Try again ?</a>
</body>
</html>

 

我自己登陆时使用的是

账号:bjensen  《=在openDJ里面的用户名 uid

密码:123456 《= 在openDJ服务里面输入的

 
对了,还有一点非常重要。

就是在你的项目的web.xml里面的最后加入以下代码:

<security-constraint>
        <web-resource-collection>
                <web-resource-name>balancer</web-resource-name>
                <description> accessible by authenticated users of the tomcat role</description>
                <url-pattern>/*</url-pattern>
                <http-method>GET</http-method>
                <http-method>POST</http-method>
                <http-method>PUT</http-method>
                <http-method>DELETE</http-method>
        </web-resource-collection>
 
        <auth-constraint>
                <description>These roles are allowed access</description>
                <role-name> tomcat </role-name>
        </auth-constraint>
 
</security-constraint>
 
<login-config>
        <auth-method>FORM</auth-method>
        <realm-name>YourWebApp Protected Area</realm-name>
        <form-login-config>
                <form-login-page>/login.html</form-login-page>
                <form-error-page>/autherr.html</form-error-page>
        </form-login-config>
</login-config>
 
<security-role>
        <description>Only 'tomcat' role is allowed to access this web
application</description>
        <role-name> tomcat </role-name>
</security-role>

 

知道web.xml的人都知道 web.xml的配置格式是:

<web-app>

    各种<context-param>

    各种<filter>和<filter-mapping>

    各种<listener>

    各种<servlet>和<servlet-mapping>

    <session-config>

    <welcome-list>

    各种<error-page>

    <tag-lib>

    <resource-ref>

    <security-constrain>

    <login-config>

    <security-role>

</web-app>

 

这样才能正确解析。

 

说到这里,启动你的服务试试吧~~!!

 

 

 

 

 

  • 大小: 50.8 KB
  • 大小: 39.3 KB
0
5
分享到:
评论
7 楼 Tristan_S 2014-02-18  
example.ldif是空的额
6 楼 xiexiaoming052 2012-12-02  
LADP目录管理
dacoolbaby 写道
lwazl1314 写道
942bc 写道
LADP是个协议吧

LDAP是一种目录访问协议,是一种以树形结构存储的数据库

确实是种协议。
但是主要用途还是与目录服务器关联,管理用户。



与目录服务器关联,管理用户。不怎么明白!不知道能不能提供简单的项目例子讲解LDAP的运用。
5 楼 lwazl1314 2012-08-24  
dacoolbaby 写道
lwazl1314 写道
942bc 写道
LADP是个协议吧

LDAP是一种目录访问协议,是一种以树形结构存储的数据库

确实是种协议。
但是主要用途还是与目录服务器关联,管理用户。

是哦,最近在研究单点登录,CAS+LDAP+uportal
4 楼 dacoolbaby 2012-08-24  
lwazl1314 写道
942bc 写道
LADP是个协议吧

LDAP是一种目录访问协议,是一种以树形结构存储的数据库

确实是种协议。
但是主要用途还是与目录服务器关联,管理用户。
3 楼 lwazl1314 2012-08-24  
942bc 写道
LADP是个协议吧

LDAP是一种目录访问协议,是一种以树形结构存储的数据库
2 楼 942bc 2012-08-24  
LADP是个协议吧
1 楼 hngmduyi 2012-08-24  

相关推荐

    tomcat配置ldap权限验证

    tomcat配置ldap权限验证 Tomcat配置LDAP权限验证是指通过LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)协议来实现用户身份验证和权限控制的过程。下面是具体的配置步骤和知识点解释: 1....

    Tomcat 连接 LDAP 服务器 加密

    标题 "Tomcat 连接 LDAP 服务器 加密" 涉及的是在Java Web应用程序中,使用Apache Tomcat服务器配置连接到LDAP(轻量级目录访问协议)服务器时的安全实践。这里的重点是确保数据传输过程中的安全性,通常通过加密...

    java连接和验证ldap文档

    Java 连接和验证 LDAP 文档 Java 连接和验证 LDAP 文档是一份关于 Java 语言连接和验证 LDAP 服务器的学习...通过使用 Java 6.0 API for LDAP,可以轻松地连接和访问 LDAP 服务器,实现目录服务中的数据访问和管理。

    LDAP的工具openDJ

    OpenDJ是一款开源的身份管理和目录服务软件,它是基于Lightweight Directory Access Protocol (LDAP) 的服务器,用于存储、管理和检索用户身份信息。LDAP是一种广泛应用于企业环境的协议,它提供了一种高效、标准化...

    LdapBrowser2.82版和LDAP使用手册

    8. **测试连接**:使用LdapBrowser或其他工具验证服务器的可访问性和数据的正确性。 **使用LdapBrowser 2.82版** 1. **连接设置**:在LdapBrowser中输入服务器地址、端口、认证方式等信息,建立连接。 2. **浏览...

    JAVA中使用LDAP进行用户认证

    JAVA中使用LDAP进行用户认证是指在JAVA应用程序中使用轻量级目录访问协议(LDAP)来进行用户身份验证。LDAP是一种基于X.500标准的目录访问协议,但它更简单、更灵活,可以根据需要进行定制。LDAP支持TCP/IP协议,使...

    java验证ldap

    用JNDI验证LDAP域中是否有对应的用户与密码。相当与域登陆

    C#使用Domino的LDAP服务验证用户

    本文将深入探讨如何使用C#语言结合Domino服务器的LDAP(Lightweight Directory Access Protocol)服务来实现用户的身份验证。这一过程不仅涉及到了C#编程、LDAP协议的基础知识,还包含了Domino服务器的特定配置和...

    使用Delphi连接LDAP服务器

    本篇文章将深入探讨如何使用Delphi来连接并操作LDAP服务器。 首先,我们需要了解Delphi中的组件库提供了哪些工具来处理LDAP连接。`TADOConnection`和`TADODataset`等组件是Delphi与数据库交互的基础,但它们并不...

    LDAP实现AD域账号验证 - Java/SpringBoot

    在提供的压缩包`springboot-ldap`中,应该包含了示例代码,展示如何在SpringBoot项目中配置和使用LDAP进行AD域账号验证。通过学习和理解这些代码,你可以更好地掌握如何在自己的项目中实现这一功能。务必仔细阅读并...

    opendj3.0.0与使用说明

    关于ldap的图形化界面自带的对数据的操作不是很方便,建议可以使用ApacheDirectoryStudio,还比较好用。 在替换00-core.ldif和99-user.ldif后,要重启opendj,linux上也要注意重启。如果想要远程访问linux上的opendj...

    domino_ldap.rar_AD联合验证_Domino_Tomcat_sso_domino_domino_ldap

    标题“domino_ldap.rar_AD联合验证_Domino_Tomcat_sso_domino_domino_ldap”涉及到的是一个关于Lotus Domino(Domino)与Active Directory(AD)进行联合身份验证(Single Sign-On, SSO)的解决方案。在这个场景中,...

    Go-Go的基本LDAP身份验证器

    LDAP很复杂。 很多时候,您真正需要做的就是用它对用户进行身份验证或获取用户条目。 该软件包将LDAP功能归结为用户身份验证和条目检索。

    使用Python读取Ldap中的用户名

    - **初始化连接**:使用`ldap.initialize()`方法创建LDAP连接对象,并设置协议版本为3。 - **简单绑定**:通过`simple_bind_s()`方法以管理员身份登录,成功后输出“ldap connect successfully”。 ##### 搜索过滤...

    ldap 使用指南

    7. 插件验证和故障排除:在文档的其他部分可能还会有对LDAP插件验证步骤的说明,以及当安装、配置或使用过程中出现问题时的故障排除信息。 综合以上知识点,LDAP插件在Mirantis OpenStack环境中的使用可以为系统...

    OpenDJ3.0.0

    - **JEE应用服务器**:例如Tomcat、JBoss等,可以通过LDAP进行用户验证。 **6. 高可用性和扩展性** OpenDJ 支持复制和负载均衡,允许创建多节点集群以提高可用性和读取性能。数据可以在各个副本之间实时同步,当主...

    svn+ldap+sasl认证(svn通过ldap用户进行认证登陆)

    在实现 svn+ldap+sasl 认证时,需要安装 ldap 服务器和配置 ldap 服务,然后在 svn 服务器中配置 sasl 认证协议,使用 ldap 服务器进行用户认证。下面是实现 svn+ldap+sasl 认证的步骤: 1. 安装 ldap 服务器 首先...

    LdapBrowser ldap连接工具

    4. 使用:连接成功后,即可开始浏览和管理LDAP目录。 总之,LdapBrowser作为一款强大的OpenLDAP管理工具,不仅简化了目录服务的管理工作,还提高了IT管理效率,是IT环境中不可或缺的工具之一。通过深入理解和熟练...

Global site tag (gtag.js) - Google Analytics