遍历查询ldap服务器用户
准备工作:使用openldap搭建server 过程略
名词
DN = Distinguished Name
DC = Domain Component
OU = Organization Unit
CN = Common Name
RDN = Relative DN
UID = User ID
1.初始化
protected static int init() {
int flag = 0;
try {
ldapHost = "192.168.1.1";
ldapNameAll = "ldap://" + ldapHost;
ldapPort = 389;
rootEntry ="dc=sysu,dc=edu,dc=cn";
rootdn = "uid=rgsam,ou=hosts,dc=sysu,dc=edu,dc=cn";
rootpw = "111";
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapNameAll + ":" + ldapPort);
env.put("com.sun.jndi.ldap.connect.timeout", "3000");
if (rootdn != null && !rootdn.equals("") && rootpw != null && !rootpw.equals("")) {
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, rootdn);
env.put(Context.SECURITY_CREDENTIALS, rootpw);
}
ctx = new InitialDirContext(env);
} catch (Exception e) {
flag = -1;
}
//返回初始化是否成功的标志位
return flag;
}
2.遍历查询
protected static int getProcessResultBatch(DirContext ctx,int limit) {
try {
String userObjectClass = "eduPerson";
String userIdAttrName ="uid";
String userPwdAttrName = "userPassword";
String userAccessTimeAttrName ="radiusExpiration";
String ldapFilter = "";
String ldapPassword = null;
String ldapAccessTime = null;
String[] attrList = null;
String rootEntry="dc=sysu,dc=edu,dc=cn";
String searchFilter = "(&(objectClass=" + userObjectClass + "))";
//Filter可自定义,一旦定义了Filter则ObjectClass就无效了
if (ldapFilter != null && !ldapFilter.equals("")) {
//searchFilter = StringUtil.str_replace(ldapFilter, "%{User-Name}", userId);
}
attrList = new String[] {userPwdAttrName, userAccessTimeAttrName};
String dn = null;
NamingEnumeration ne = null;
try {
SearchControls controls = new SearchControls(SearchControls.SUBTREE_SCOPE, limit, 0, attrList, false, false);
ne = ctx.search(rootEntry, searchFilter, controls);
} catch (Exception e) {
return RESULT_ERR_CONNECT;
}
while(ne.hasMore()) {
SearchResult sr = (SearchResult)ne.next();
Attributes attrs = sr.getAttributes();
Attribute passwordAttr = attrs.get(userPwdAttrName);
ldapPassword = new String((byte[]) passwordAttr.get());
if(ldapPassword == null){
return RESULT_ERR_PASSWORD;
}
Attribute accessTimeAttr = attrs.get(userAccessTimeAttrName);
ldapAccessTime = (String)accessTimeAttr.get();
dn = sr.getNameInNamespace();
System.out.println(dn.toString());
}
} catch (Exception e) {
return RESULT_ERR_CONNECT;
}
return RESULT_SUCCESS;
}
3.测试程序
int ret=init();
if(ret==0){
System.out.println("LDAP初始化成功");
}else{
System.out.println("LDAP初始化失败");
}
int result=getProcessResultBatch(ctx,100);
if(result==RESULT_SUCCESS){
System.out.println("RESULT_SUCCESS");
}else if(result==RESULT_ERR_CONNECT){
// System.out.println("RESULT_ERR_CONNECT");
}else if(result==RESULT_ERR_NOUSER){
System.out.println("RESULT_ERR_NOUSER");
}else if(result==RESULT_ERR_PASSWORD){
System.out.println("RESULT_ERR_PASSWORD");
}else{
System.out.println("RESULT_OTHER");
}
转载于:https://www.cnblogs.com/davidwang456/archive/2013/01/09/2853191.html
遍历查询ldap服务器用户相关推荐
- 连接LDAP服务器用户,使用 LDAP 服务器进行连接
使用 LDAP 服务器进行连接 如果使用的是 Windows(Windows Mobile 除外)或 Unix 平台,则可以指定一个中央 LDAP 服务器来跟踪企业中的所有数据库服务器.如果数据库服务 ...
- ldap管理linux用户,ldap服务器用户及权限管理控制linux操作系统 -电脑资料
ldap服务器可能使用的用户比较少,但自己就要去用在百度找了N久没找到什么可用的内容,就只在看英文了,下面我来给大家介绍ldap服务器用户及权限管理控制,希望此文章对大家有帮助, openldap默认 ...
- ldap统一用户认证php,针对LDAP服务器进行身份认证
Symfony提供了不同的方法来配合LDAP服务器使用. Security组件提供: ldap user provider,使用的是 form_login_ldap authentication pr ...
- Golang TCP服务器用户修改名字、查询用户在线以及私聊功能
服务器块关键代码: 根据协议调用不同的命令,我这边以"who:"查询用户是否在线,"rename:XXX"进行用户名更改,"to:XXX:msg&qu ...
- 服务器登录账号不能切换,切换LDAP服务器后用户无法登陆
[简述你的问题] 在Web界面更改ldap配置后,除了LDAP地址外,其它参数配置不生效,造成用户无法登陆 使用版本 [请提供你使用的Jumpserver版本 1.x.x 注: 0.3.x不再提供支持 ...
- PHP 从LDAP服务器获取用户信息
/* 注意: 1.LDAP服务器在Linux(OpenLDAP)和Windows(Active Directory)下绑定用户名和密码时用户名的格式是不一样的. 2.Warning: ldap_bin ...
- GPU服务器查询进程所属用户
1.打开系统管理界面 使用 nvidia-smi 指令打开 nvidia 的系统管理界面,查询进程号 PID: nvidia-smi 2. 查询进程所属用户 使用命令 ps u PID 查询,如: p ...
- 使用PHP连接LDAP服务器
本文将演示如何使用PHP连接一个LDAP服务器.具体的例子是连接到一个公共的LDAP服务器并且进行搜索.这个例子模拟的是Netscape Communicator 4.*,通过自己的地址本连接到LDA ...
- Openldap部署LDAP服务器平台
Openldap部署LDAP服务器平台 一.安装软件包 yum -y install openldap openldap-clients openldap-servers db4 二.配置openld ...
最新文章
- Python3.5+SQL+Prometheus+Grafana报表/监控
- android设置app全局没通知声,从android中的firebase发送通知时没有通知声音
- Ajax操作的四个步骤
- [问题解决]NotImplementedError 错误原因:子类没有实现父类要求一定要实现的接口
- 网站优化之各个页面的关键词密度的把控
- 判断是不是链接 正则_Python 正则表达式 保姆级教程,小学生都看得懂!!
- Socket之TCP服务器【Python】
- 力扣225-用队列实现栈(C++,附思路及优化思路,代码)
- e - 数据结构实验之查找五:平方之哈希表_面试中常被问到的Hash表,你了解吗
- plsql 往视图传参数_我们可以将参数传递给SQL中的视图吗?
- IE6下解决select层级高的问题
- 获取农历时间(几月初几)
- [4G5G专题-27]:架构-UE终端的4G+5G双连接详解
- Apache Kudo: 1.0版和未来 [session]
- 使用vue报错Cannot use ‘in‘ operator to search for
- uva 1471 Defense Lines (降低复杂度)
- Linux系统之部署Rsyslog 日志服务器
- ERD Online 4.0.7 在线数据库建模、元数据管理(免费、私有部署)
- 五中高考的成绩单2021查询,北京五中高考成绩解读
- 抓手,赋能,勾兑,落盘,组合拳!你听过这些互联网黑话吗?
热门文章
- mysql duplicateentry_[MySQL]mysqldump出来数据再导入回去,为什么会出现Duplicate entry?...
- C和C++中的默认类型
- Android:Margin和Padding
- sql 中的导航函数 FIRST_VALUE, LAST_VALUE
- sql 精读(四) 标准 SQL 中聚合分析功能示例
- Python 面向对象 编程(一)
- qq分享 设备未授权报错解决方案_金融行业思科设备典型网络故障案例:76系列典型案例(四)...
- MATLAB可视化实战系列(二十五)-MATLAB基于直方图的图像去雾
- 深入推荐引擎相关算法 - 聚类
- hadoop学习--多表关联