说是要使用这个ldap来实现第三方用户登陆,估计是很古老的科技了,也估计就古老的企业使用这个技术吧。

谁管你ldap或者ad是个啥玩意儿啊,我需要给你详细介绍一下吗?

不,不需要,直接开干,怎么使用就完了,

就像开车一样,我特么还需要先学习一下发动机原理吗,

不用,有驾照,一脚油门,能起步就完啦,谁特么有空去管那个原理呀,纯属浪费时间。

下面是自己的实践记录

1,先是ldap域名登陆。

    /** 
     * 测试LDAP认证 
     * 这么测试就通过了,使用的环境, 
     * 参看同目录下的 
     * ladp_test.png 
     * LDAP_TEST2.png 
     * 
     * 
     * 实际使用ldap的现场配置的例子 
     * 配置方式: 
     * 域名:ldap.cdb.com.cn 
     * 基本DN:ou=cdb,dc=intra,dc=cdb,dc=com,dc=cn 
     * 绑定DN:cn=apmadmin,ou=APM,ou=Applications,ou=cdb,dc=intra,dc=cdb,dc=com,dc=cn 
     * 密码:123asd!@# 
     * 
     */ 
    @Test 
    public void myTest() { 
        Hashtable<String, String> env = new Hashtable<>(); 
        env.put(Context.PROVIDER_URL, "ldap://192.168.1.43:389"); 
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
        env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
 
        //图片ladp_test.png的参数配置 
        //env.put(Context.SECURITY_PRINCIPAL, "uid=Michael,ou=Developer,dc=micmiu,dc=com"); 
 
        //图片LDAP_TEST2.png的参数配置 
        env.put(Context.SECURITY_PRINCIPAL, "uid=Michael,ou=APM,ou=Applications,ou=cdb,dc=intra,dc=cdb,dc=com,dc=cn"); 
 
        env.put(Context.SECURITY_CREDENTIALS, "111111"); 
        env.put(Context.REFERRAL, "throw"); 
        try { 
            DirContext ctx = new InitialDirContext(env); 
            ctx.close(); 
            System.out.println("ok - ok"); 
        } catch (javax.naming.AuthenticationException e) { 
            System.out.println("---------------域账户认证失败:" + e.toString()); 
        } catch (Exception e) { 
            System.out.println("---------------域账户认证异常:" + e.toString()); 
        } 
    }

上面的就是认证代码,只要不异常,那就算通过了域名认证了,下面就可以做其他的事情了。

我这没有对这个域名登陆的LDAP做太多的说明和解释。下面是部分字段的解释,不区分大小写的。

大师兄

下面是2个ldap服务器的配置的图

大师兄

对应上面代码中注释的描述:图片ladp_test.png的参数配置

大师兄

对应代码中未注释的那个:图片LDAP_TEST2.png的参数配置

代码里面的ctx使用完之后,没有以正确的姿势关闭,使用的老铁记得正规姿势关闭一下。跟管文件流一个姿势。

上面使用的登陆的用户都是一般的用户。不是管理员的账户。

下面是管理员账户的情况

大师兄

最麻烦的地方,就是这个 Context.SECURITY_PRINCIPAL 这个key对应的值的设置,这个要是设置的不OK的话,登陆就不OK。

2,AD域名认证

这个时候,上面代码差别就是对用户名对设置对差别

大师兄

就跟这个代码注释对差不多,需要个doMain对配置,然后是斜杠,然后是用户名。


发布评论
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

Java 代码性能优化(总目录篇)知识解答
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。