【Java实战】Java集成AD域账号登录
目的JAVA集成域账号登录的实现方案通过LDAPUtil类实现对AD域的身份验证。系统采用双域服务器配置支持主备切换。关键点包括1) LDAP连接参数配置2) 区分管理员账号和普通域账号的双重验证机制管理员通过本地数据库验证其他用户通过AD域验证3) 完善的异常处理机制。该方案实现了企业级统一身份认证同时保留了本地管理员账号的特殊处理逻辑。代码片段展示了完整的认证流程包括LDAP连接建立、密码验证及资源释放等关键环节。public class LDAPUtil { // private static final String LDAP_URL ldap://XXXXXXX:389;//主域 private static final String LDAP_URL ldap://XXXXXXX:389;//辅域 // private static final String LDAP_URL ldap://XXXXXXX:389;//域名 private static final String USER_EMAIL XXXXXXX.com; /** * LdapContext 验证身份 * * param username * param password * return * throws NamingException */ public static LdapContext getLdapContext(String username, String password) throws NamingException { //创建连接 HashtableString, String env new HashtableString, String(); env.put(Context.INITIAL_CONTEXT_FACTORY, com.sun.jndi.ldap.LdapCtxFactory); env.put(Context.PROVIDER_URL, LDAP_URL); env.put(Context.SECURITY_AUTHENTICATION, simple); env.put(Context.SECURITY_PRINCIPAL, username USER_EMAIL); env.put(Context.SECURITY_CREDENTIALS, password); return new InitialLdapContext(env, null); } }修改登录验证排除admin管理员账号//update-start--Author:wangyuhuang Date:20230615 fro:管理员账号验证账号密码其他用户验证域账号 //2. 验证是否是管理员账号 if (username.equals(admin)) { //2-1. 校验用户名或密码是否正确 String userpassword PasswordUtil.encrypt(username, password, sysUser.getSalt()); String syspassword sysUser.getPassword(); if (!syspassword.equals(userpassword)) { result.error500(用户名或密码错误); return result; } } else { //2-1. 域账号身份验证 LdapContext lct null; try { // 连接 验证身份 lct LDAPUtil.getLdapContext(username, password); } catch (AuthenticationException e) { System.out.println(账号或密码错误); } catch (CommunicationException e) { System.out.println(AD域连接失败); e.printStackTrace(); } catch (Exception e) { System.out.println(身份验证未知异常); e.printStackTrace(); } finally { if (null ! lct) { try { lct.close(); lct null; } catch (Exception e) { e.printStackTrace(); } } else { result.error500(用户名或密码错误); return result; } } } //update-end--Author:wangyuhuang Date:20230615 fro:管理员账号验证账号密码其他用户验证域账号
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2408502.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!