准备工作:使用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服务器用户相关推荐

  1. 连接LDAP服务器用户,使用 LDAP 服务器进行连接

    使用 LDAP 服务器进行连接 如果使用的是 Windows(Windows Mobile 除外)或 Unix 平台,则可以指定一个中央 LDAP 服务器来跟踪企业中的所有数据库服务器.如果数据库服务 ...

  2. ldap管理linux用户,ldap服务器用户及权限管理控制linux操作系统 -电脑资料

    ldap服务器可能使用的用户比较少,但自己就要去用在百度找了N久没找到什么可用的内容,就只在看英文了,下面我来给大家介绍ldap服务器用户及权限管理控制,希望此文章对大家有帮助, openldap默认 ...

  3. ldap统一用户认证php,针对LDAP服务器进行身份认证

    Symfony提供了不同的方法来配合LDAP服务器使用. Security组件提供: ldap user provider,使用的是 form_login_ldap authentication pr ...

  4. Golang TCP服务器用户修改名字、查询用户在线以及私聊功能

    服务器块关键代码: 根据协议调用不同的命令,我这边以"who:"查询用户是否在线,"rename:XXX"进行用户名更改,"to:XXX:msg&qu ...

  5. 服务器登录账号不能切换,切换LDAP服务器后用户无法登陆

    [简述你的问题] 在Web界面更改ldap配置后,除了LDAP地址外,其它参数配置不生效,造成用户无法登陆 使用版本 [请提供你使用的Jumpserver版本 1.x.x 注: 0.3.x不再提供支持 ...

  6. PHP 从LDAP服务器获取用户信息

    /* 注意: 1.LDAP服务器在Linux(OpenLDAP)和Windows(Active Directory)下绑定用户名和密码时用户名的格式是不一样的. 2.Warning: ldap_bin ...

  7. GPU服务器查询进程所属用户

    1.打开系统管理界面 使用 nvidia-smi 指令打开 nvidia 的系统管理界面,查询进程号 PID: nvidia-smi 2. 查询进程所属用户 使用命令 ps u PID 查询,如: p ...

  8. 使用PHP连接LDAP服务器

    本文将演示如何使用PHP连接一个LDAP服务器.具体的例子是连接到一个公共的LDAP服务器并且进行搜索.这个例子模拟的是Netscape Communicator 4.*,通过自己的地址本连接到LDA ...

  9. Openldap部署LDAP服务器平台

    Openldap部署LDAP服务器平台 一.安装软件包 yum -y install openldap openldap-clients openldap-servers db4 二.配置openld ...

最新文章

  1. Python3.5+SQL+Prometheus+Grafana报表/监控
  2. android设置app全局没通知声,从android中的firebase发送通知时没有通知声音
  3. Ajax操作的四个步骤
  4. [问题解决]NotImplementedError 错误原因:子类没有实现父类要求一定要实现的接口
  5. 网站优化之各个页面的关键词密度的把控
  6. 判断是不是链接 正则_Python 正则表达式 保姆级教程,小学生都看得懂!!
  7. Socket之TCP服务器【Python】
  8. 力扣225-用队列实现栈(C++,附思路及优化思路,代码)
  9. e - 数据结构实验之查找五:平方之哈希表_面试中常被问到的Hash表,你了解吗
  10. plsql 往视图传参数_我们可以将参数传递给SQL中的视图吗?
  11. IE6下解决select层级高的问题
  12. 获取农历时间(几月初几)
  13. [4G5G专题-27]:架构-UE终端的4G+5G双连接详解
  14. Apache Kudo: 1.0版和未来 [session]
  15. 使用vue报错Cannot use ‘in‘ operator to search for
  16. uva 1471 Defense Lines (降低复杂度)
  17. Linux系统之部署Rsyslog 日志服务器
  18. ERD Online 4.0.7 在线数据库建模、元数据管理(免费、私有部署)
  19. 五中高考的成绩单2021查询,北京五中高考成绩解读
  20. 抓手,赋能,勾兑,落盘,组合拳!你听过这些互联网黑话吗?

热门文章

  1. mysql duplicateentry_[MySQL]mysqldump出来数据再导入回去,为什么会出现Duplicate entry?...
  2. C和C++中的默认类型
  3. Android:Margin和Padding
  4. sql 中的导航函数 FIRST_VALUE, LAST_VALUE
  5. sql 精读(四) 标准 SQL 中聚合分析功能示例
  6. Python 面向对象 编程(一)
  7. qq分享 设备未授权报错解决方案_金融行业思科设备典型网络故障案例:76系列典型案例(四)...
  8. MATLAB可视化实战系列(二十五)-MATLAB基于直方图的图像去雾
  9. 深入推荐引擎相关算法 - 聚类
  10. hadoop学习--多表关联