使用JAVA进行ad域身份验证常用属性详解

一些变态的公司经常对开发者提出一些变态的问题。比如在oa系统中,要求登录验证必须使用ad域进行登录。还有的如登录crm系统必须使用公司的邮箱账号进行身份验证等等。 作为程序员我们只能按照客户的需求进行完善系统。毕竟客户才是我们的衣食父母,没办法拒绝。我这里就列举一些,在系统中集成ad域身份验证的一些配置信息,并一一解释他们的作用。 直接看代码:

public boolean login() {
		// 判断必填字段是否全部填写
		if (StringUtils.isEmpty(this.username)
			|| StringUtils.isEmpty(this.domain)
			|| StringUtils.isEmpty(this.ip)) {
			logger.info("必填信息为空,LDAP连接失败!");
			return false;
		}
		Properties env = new Properties();
		String account = this.username + "@" + this.domain;
		String ldapURL = "LDAP://" + this.ip + ":" + this.port;
		env.put(Context.PROVIDER_URL, ldapURL);
		env.put(Context.SECURITY_AUTHENTICATION, "simple");
		env.put(Context.SECURITY_PRINCIPAL, account);
		env.put(Context.SECURITY_CREDENTIALS, this.password);
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");  
        //批量处理
        env.put(Context.BATCHSIZE, "50");
        // 连接超时设置
        env.put("com.sun.jndi.ldap.connect.timeout", "3000");
        // LDAP连接池
        env.put("com.sun.jndi.ldap.connect.pool", "true");
        // LDAP连接池最大数
        env.put("com.sun.jndi.ldap.connect.pool.maxsize", "3");
        // LDAP连接池优先数
        env.put("com.sun.jndi.ldap.connect.pool.prefsize", "1");
        // LDAP连接池超时
        env.put("com.sun.jndi.ldap.connect.pool.timeout", "300000");
        // LDAP连接池初始化数
        env.put("com.sun.jndi.ldap.connect.pool.initsize", "1");
        // LDAP连接池的认证方式
        env.put("com.sun.jndi.ldap.connect.pool.authentication", "simple");
		try {
			dc = new InitialLdapContext(env, null);
			logger.info("域用户" + this.username + " 登录" + account + "成功!");
			return true;
		} catch (Exception e) {
			logger.info("域用户" + this.username + " 登录" + account + "失败!");
			return false;
		}
	}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏黑泽君的专栏

day77_淘淘商城项目_10_ Nginx代理详解 + 单点登录系统工程搭建 + 接口文档讲解_匠心笔记

目前访问后台系统:   http://localhost:8081/ 目前访问首页系统:   http://localhost:8082/ 目前访问搜索结果页面...

23920
来自专栏小怪聊职场

安全|Java中使用JWT生成Token进行接口鉴权实现

先介绍下利用JWT进行鉴权的思路: 1、用户发起登录请求。 2、服务端创建一个加密后的JWT信息,作为Token返回。 3、在后续请求中JWT信息作为请求...

82830
来自专栏漏斗社区

专属| Dell遭受黑客攻击

日前,戴尔发布公告称:“检测并瓦解了一场针对 Dell.com 的网络攻击,未经授权的攻击者试图窃取戴尔的客户信息,但仅限于姓名、电子邮件地址、以及散列(哈希)...

12930
来自专栏有困难要上,没有困难创造困难也要上!

修改用户ID和用户组ID

44730
来自专栏嘉为科技的专栏

关于ITIL V3 & ITIL 2011,你需要知道这些!

在 20 世纪 80 年代末期,英国商务部(OGC,Office Government Commerce)发布了 ITIL。OGC 最初的目标是通过应用 IT ...

38220
来自专栏编码前线

Android中的序列化:Parcelable和Serializable

13310
来自专栏嘉为科技的专栏

大道至简-GO语言最佳实践

2007年,受够了C++煎熬的Google首席软件工程师Rob Pike纠集Robert Griesemer和Ken Thompson两位牛人,决定创造一种新语...

20320
来自专栏Debian社区

Linux基金会宣布开放物联网ACRN管理程序

Linux基金会发布了其中一个开源项目ACRN的详细信息,这是一个专为物联网和嵌入式设备设计的管理程序。该项目得益于英特尔代码和工程的贡献,其目标是创建一个灵活...

9610
来自专栏Hadoop实操

0466-CDH5.16.1和CM5.16.1的新功能

Fayson在2018年的6月15日介绍了《CDH5.15和CM5.15的新功能》,今天11月29日,Cloudera正式发布CDH5.16.1。从5.15到5...

31530
来自专栏zhisheng

《从0到1学习Flink》—— 如何自定义 Data Sink ?

前篇文章 《从0到1学习Flink》—— Data Sink 介绍 介绍了 Flink Data Sink,也介绍了 Flink 自带的 Sink,那么如何自定...

19730

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励