Linux 下安装Ldap笔记
参考地址:http://www.yuanma.org/data/2008/0428/article_3023.htm
1、安装环境版本:
openldap-stable-20100719.tgz(openldap-2.4.23) (http://www.openldap.org)
ldapweb-2.0.zip (Ldap web管理工具,需要先安装Apach服务器,后来再看看....还需要安装mysql的环境,烦,不装了)(http://sourceforge.net/projects/ldapweb)
后来在使用的过程中碰到一工具 LdapSearch 3.0 ,可以用于查询 ,后面介绍
LDAP Browser/Editor v2.8.2 LDAP 编辑工具
2、所需要软件:
BDB, 在安装Ldap的过程中,提示说需要BDB的环境
在openldap-2.4.23\README 文件中也有提及,且对版本也有要求,我下载的是 db-4.6.21.tar.tar
SLAPD:
BDB and HDB backends require Oracle Berkeley DB 4.4, 4.5,
4.6, 4.7, or 4.8. It is highly recommended to apply the
patches from Oracle for a given release.
3、安装Ldap
#tar –zxvf openldap-stable-20100719.tgz
#cd openldap-2.4.23
#./configure –prefix=/home/local/ldap //指定安装后的目录
#make depend //如果没有BDB的环境,这里会报错,关于BDB的安装见 【4】
#make
#make install
配置:
slapd.conf文件 端口默认为389
suffix "o=hitek,c=cn"
rootdn "cn=root,o=hitek,c=cn" //这个就是后面登录的用户名
rootpw 123 //这里可以直接写明文,也可以用/home/local/ldap/sbin/slappasswd 生成密文
directory /home/local/ldap/var/openldap-data //存储数据的目录
编辑可以用于导入的ldif文件
/home/local/ldap/var/openldap-data/base.ldif
dn:o=hitek,c=cn
o:hitek
objectclass:top
objectclass:organization //这个好像是指定的
dn:ou=manager,o=hitek,c=cn //类似于建个组
ou:manager
objectclass:top
objectclass:organizationalUnit //这个好像是指定的
dn:cn=simbe,ou=manager,o=hitek,c=cn //一个用户simbe
objectclass:top
objectclass:organizationalRole //这个好像是指定的
cn:simbe
4、BDB的安装
#tar zxvf db-4.6.21.tar.gz
#mkdir /var/apps/db-4.6.21
#/.../db-4.6.21/configure
#make;make install
#tar -zxf db-4.6.21.tar.tar
#cd db-4.6.21/build_unix/
#../dist/configure --prefix=/usr/local/BerkeleyDB
#make
#make install
//下面的可以编辑 ~/.bash_profile 加入环境变量
#export CPPFLAGS="-I/usr/local/BerkeleyDB/include"
#export LDFLAGS="-L/usr/local/BerkeleyDB/lib" //注:如不设此环境变量,在编译openldap时,会出现以下错误 configure: error: BDB/HDB: BerkeleyDB not available
#export LD_LIBRARY_PATH="/usr/local/BerkeleyDB/lib" //configure: error: Berkeley DB version mismatch
5、ldap 工具介绍
下载地址:http://www.baidu.com/s?wd=LdapSearch+3.0&rsv_bp=0&n=2&inputT=859
LDAP Browser/Editor v2.8.2
6、常用的一些ldap操作
开启
/home/local/ldap/libexec/slapd
关闭
kill -9
生成密码
/home/local/ldap/sbin/slappasswd
检查 search ,ldap是否成功
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
配置
/home/local/ldap/etc/openldap/slapd.conf
添加节点
ldapadd -x -D "cn=Manager,dc=taitien,dc=com,dc=tw" -W -f BDN.ldif
ldapadd -x -D "cn=root,o=hitek,c=cn" -W -f /home/local/ldap/var/openldap-data/base.ldif
7、JAVA调用Ldap
调用使用JNDI,不需要另外的JAR包
import java.util.Enumeration;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
public class Ldap
{
private Hashtable env = null;
private DirContext ctx = null;
private boolean islogin = false;
StringBuffer url;
String host;
String port;
String userName;
String password;
String baseDN;
public static void main(String[] args)
{
Ldap ldap = new Ldap();
ldap.userLogin();
}
public Ldap()
{
try
{
host = "10.47.159.29";
port = "389";
baseDN = "o=hitek,c=cn";
userName = "cn=root,o=hitek,c=cn";
password = "123";
url = new StringBuffer("LDAP://");
url.append(host).append(":").append(port);
url.append("/").append(baseDN);
} catch (Exception e)
{
e.printStackTrace();
System.out.println("");
}
// pwd="secret";
env = new Hashtable();
env.put("java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory");
env.put("java.naming.provider.url", url.toString());
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put("java.naming.security.principal", userName);
env.put("java.naming.security.credentials", password);
System.out.println("-------------");
}
public boolean userLogin()
{
Hashtable envi = new Hashtable();
try
{
envi.put("java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory");
envi.put("java.naming.provider.url", url.toString());
envi.put(Context.SECURITY_AUTHENTICATION, "simple");
envi.put("java.naming.security.principal", userName);
envi.put("java.naming.security.credentials", password);
DirContext ctx = new InitialDirContext(envi);
System.out.println("连接成功");
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
String attrList[] = { "cn" };
constraints.setReturningAttributes(attrList);
NamingEnumeration results = ctx.search("ou=manager", "cn=abc", constraints); // 第一个值 不能有Base DN的值
while (results.hasMore())
{
SearchResult si = (SearchResult) results.next();
System.out.println(si.getName());
Attributes attrs = si.getAttributes();
if (attrs == null)
{
System.out.println(" No attributes");
continue;
}
NamingEnumeration ae = attrs.getAll();
while (ae.hasMoreElements())
{
Attribute attr = (Attribute) ae.next();
String id = attr.getID();
Enumeration vals = attr.getAll();
while (vals.hasMoreElements())
System.out.println(" " + id + ": " + vals.nextElement());
}
}
System.out.println(" 查询成功");
// 3.添加节点
String newUserName = "user2";
BasicAttributes attrsbu = new BasicAttributes();
BasicAttribute objclassSet = new BasicAttribute("objectClass");
objclassSet.add("top");
objclassSet.add("organizationalRole");
attrsbu.put(objclassSet);
attrsbu.put("ou", newUserName);
attrsbu.put("cn", newUserName);
ctx.createSubcontext("", attrsbu);
System.out.println("添加节点成功");
return true;
} catch (Exception e)
{
e.printStackTrace();
return false;
} finally
{
try
{
if (ctx != null)
{
ctx.close();
}
} catch (Exception ie)
{
ie.printStackTrace();
}
}
}
}
8、LDAP错误码
代码 值 说明
---------------------------------------------------------------------------
LDAP_SUCCESS 0x00 请求成功。
LDAP_OPERATIONS_ERROR 0x01 LDAP 库初始化失败。
LDAP_PROTOCOL_ERROR 0x02 出现协议错误。
LDAP_TIMELIMIT_EXCEEDED 0x03 超出时间限制。
LDAP_SIZELIMIT_EXCEEDED 0x04 超出大小限制。
LDAP_COMPARE_FALSE 0x05 比较结果为 FALSE。
LDAP_COMPARE_TRUE 0x06 比较结果为 TRUE。
LDAP_AUTH_METHOD_NOT_SUPPORTED 0x07 不支持此身份验证方法。
LDAP_STRONG_AUTH_REQUIRED 0x08 需要加强的身份验证。
LDAP_REFERRAL_V2 0x09 LDAP 版本 2 检索。
LDAP_PARTIAL_RESULTS 0x09 接收到部分结果和检索。
LDAP_REFERRAL 0x0a 出现检索。
LDAP_ADMIN_LIMIT_EXCEEDED 0x0b 超出服务器上的管理限制。
LDAP_UNAVAILABLE_CRIT_EXTENSION 0x0c 没有精密扩展。
LDAP_CONFIDENTIALITY_REQUIRED 0x0d 需要保密。
LDAP_NO_SUCH_ATTRIBUTE 0x10 请求的属性不存在。
LDAP_UNDEFINED_TYPE 0x11 类型未定义。
LDAP_INAPPROPRIATE_MATCHING 0x12 出现不适当的匹配。
LDAP_CONSTRAINT_VIOLATION 0x13 出现约束冲突。
LDAP_ATTRIBUTE_OR_VALUE_EXISTS 0x14 属性已存在或已被赋值。
LDAP_INVALID_SYNTAX 0x15 语法无效。
LDAP_NO_SUCH_OBJECT 0x20 对象不存在。
LDAP_ALIAS_PROBLEM 0x21 别名无效。
LDAP_INVALID_DN_SYNTAX 0x22 辨别名的语法无效。
LDAP_IS_LEAF 0x23 该对象为叶对象。
LDAP_ALIAS_DEREF_PROBLEM 0x24 无法取消对别名的引用。
LDAP_INAPPROPRIATE_AUTH 0x30 身份验证不正确。
LDAP_INVALID_CREDENTIALS 0x31 提供的凭据无效。
LDAP_INSUFFICIENT_RIGHTS 0x32 用户无足够的访问权限。
LDAP_BUSY 0x33 服务器忙。
LDAP_UNAVAILABLE 0x34 服务器不可用。
LDAP_UNWILLING_TO_PERFORM 0x35 服务器不处理目录请求。
LDAP_LOOP_DETECT 0x36 引用链循环回至引用服务器。
LDAP_NAMING_VIOLATION 0x40 存在命名冲突。
LDAP_OBJECT_CLASS_VIOLATION 0x41 存在对象类别冲突。
LDAP_NOT_ALLOWED_ON_NONLEAF 0x42 不允许在非叶对象上操作。
LDAP_NOT_ALLOWED_ON_RDN 0x43 不允许在 RDN 上操作。
LDAP_ALREADY_EXISTS 0x44 对象已存在。
LDAP_NO_OBJECT_CLASS_MODS 0x45 无法修改对象类别。
LDAP_RESULTS_TOO_LARGE 0x46 返回的结果太大。
LDAP_AFFECTS_MULTIPLE_DSAS 0x47 多个目录服务代理受到影响。
LDAP_OTHER 0x50 出现未知错误。
LDAP_SERVER_DOWN 0x51 无法联系 LDAP 服务器。
LDAP_LOCAL_ERROR 0x52 出现本地错误。
LDAP_ENCODING_ERROR 0x53 出现编码错误。
LDAP_DECODING_ERROR 0x54 出现解码错误。
LDAP_TIMEOUT 0x55 搜索超时。
LDAP_AUTH_UNKNOWN 0x56 出现未知的身份验证错误。
LDAP_FILTER_ERROR 0x57 搜索筛选器不正确。
LDAP_USER_CANCELLED 0x58 用户已取消操作。
LDAP_PARAM_ERROR 0x59 传递给例程的参数不正确。
LDAP_NO_MEMORY 0x5a 系统内存不足。
LDAP_CONNECT_ERROR 0x5b 无法建立到服务器的连接。
LDAP_NOT_SUPPORTED 0x5c 不支持此功能。
LDAP_CONTROL_NOT_FOUND 0x5d ldap 函数找不到指定控件。
LDAP_NO_RESULTS_RETURNED 0x5e 不支持此功能。
LDAP_MORE_RESULTS_TO_RETURN 0x5f 将返回其他结果。
LDAP_CLIENT_LOOP 0x60 检测到客户循环。
LDAP_REFERRAL_LIMIT_EXCEEDED 0x61 超出检索限制。
LDAP_SASL_BIND_IN_PROGRESS 0x0E 多阶段绑定的中间绑定结果
- 大小: 406.2 KB
- 大小: 15.6 KB
分享到:
相关推荐
自己学习LDAP的笔记记录,包括有LDAP的简单介绍,在windows下的安装部署及api介绍,Linux下的编译安装及在KDevelop下的api调用。还有对一个可视化管理工具phpLDAPadmin的介绍
配置完成后,你可以使用ldapsearch等工具进行查询,以验证配置是否正确,并开始利用LDAP来管理用户、组和其他目录信息。在实际应用中,LDAP常用于身份验证、授权和目录服务,如用户账户管理、邮件系统、网络设备配置...
4. **配置CAS Server**:配置CAS Server以使用LDAP作为认证源,这通常涉及修改`deployerConfigContext.xml`文件,设置LDAP连接池、用户搜索过滤器和属性映射。 5. **配置CAS Client**:在各个应用服务中,更新或配置...
Windows 64 位编译为 Linux 64 位导出到 LDIF 导出到 XLS 导出到 CSV 支持LDAPS 支持多值属性保存和加载配置文件自动恢复以前使用的会话“便笺”功能允许使用配置文件保存笔记模式支持属性完成以协助大型模式安装#...
整合CAS和LDAP可以实现统一的用户管理,使得用户在登录到使用CAS的应用程序时,其身份验证将通过LDAP来进行。 ##### 4.2 LDAP安装 安装LDAP服务器通常包括以下步骤: 1. **选择合适的LDAP服务器软件**:如OpenLDAP...
以上步骤详细介绍了如何在Zeppelin中集成LDAP的过程,包括安装配置OpenLDAP服务、配置客户端工具以及配置Zeppelin以使用LDAP进行认证和授权。这一过程不仅可以提高系统的安全性,还能够简化用户管理流程。
【JAVA WEB学习笔记】——Tomcat中数据源的配置与使用 在Java Web开发中,数据源(DataSource)是管理数据库连接的关键组件。它提供了一种高效、灵活的方式来获取和管理数据库连接,尤其是在大型企业级应用中。...
对于首次安装的用户,请在应用市场右下角选择“导入”功能,然后选择要导入的文件,即文件夹下的“dzz_app_LDAP.xml”。选择文件后点击“提交”按钮完成安装。 请严格按照上述步骤操作,以确保插件能够正确安装和...
对于首次安装的用户,请在应用市场右下角选择“导入”功能,然后选择要导入的文件,即文件夹下的“dzz_app_LDAP.xml”。选择文件后点击“提交”按钮完成安装。 请严格按照上述步骤操作,以确保插件能够正确安装和...
本篇笔记将围绕如何在Red Hat Enterprise Linux 5.4 (RHEL 5.4) 环境下搭建和配置NIS服务展开。具体目标包括: 1. **搭建单域单NIS服务器** - 在单台服务器上配置NIS服务,使之能够为客户端提供统一的身份验证和...
《Linux企业应用案例》一书通过丰富的实战案例,不仅深入浅出地介绍了Linux环境下企业级应用的关键技术点,还提供了大量的实践指导,对于希望深入了解并掌握这些技能的读者来说,是非常宝贵的参考资料。无论是对...
JMeter 完全由 Java 编写,因此在安装前需要确保计算机上已安装了 JDK 且版本在1.8或以上。JMeter 支持多种操作系统,包括 Windows 和 Linux,能够处理多种协议,如 HTTP、HTTPS、GET、POST、PUT 等,适合进行接口...
4. 使用LDAP用户登录。 #### 六、权限管理 Linux中的文件权限通过`ls -l`命令查看,例如: ``` -rw-r--r--. 1 root root 17 Nov 16 04:44 test ``` - `-rw-r--r--`表示文件权限,前一个`-`表示这是一个文件而非...
- **配置用户认证策略**:在RADIUS服务器上配置使用LDAP作为验证后端的相关策略。 #### 六、实际应用场景 想象一下这样的场景: - 用户在家里通过拨号验证访问公司内网。 - 带有无线支持的笔记本电脑通过无线验证...
- **安装**:Jenkins可以通过下载war文件运行在Java环境上,或者在Linux、Windows、macOS等操作系统上通过包管理器安装。 - **配置**:初始化时,Jenkins会引导用户设置管理员密码,并推荐安装一些常用插件。之后...
Red Hat Linux 6.1的核心特性之一是其隐形安装实用程序,使得安装过程变得更加简单。此外,它还增强了对SMP(对称多处理)的支持,提升了软件和硬件RAID的性能,适合作为服务器使用。6.1版本还集成了LDAP支持,改进...
本文将深入探讨在AIX学习笔记中提到的一些关键知识点,包括AIX的安装、AIX5.2中基于LDAP的用户管理、AIX微码升级以及AIX中的镜像操作。 首先,让我们来看看AIX的安装过程。AIX的安装通常通过System Director或Open...