一些变态的公司经常对开发者提出一些变态的问题。比如在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; } }
欢迎大家关注我的博客!如有疑问,请加QQ群:135430763共同学习!
时间: 2024-10-23 12:47:39