问题描述
使用该方法在同一个域中验证用户成功,但是在不同域中验证失败。例如:有两个域A,B将项目部署在A域中,或取B域中的账户作验证。如果跨域就验证失败。DirContextctx=null;Stringaccount=loginAction.getLoginName();//设置访问账号Stringpassword=loginAction.getPassword();//设置账号密码Stringhost=SaiLunAfterItem.DOMAIN_IP;//AD服务器Stringroot="389";//rootStringdomain=SaiLunAfterItem.DOMAIN;//邮箱的后缀名Stringuser=account.indexOf(domain)>0?account:account+domain;log.info("用户名=="+user);Hashtable<String,String>env=newHashtable<String,String>();env.put(Context.PROVIDER_URL,"ldap://"+host+":"+root);env.put(Context.SECURITY_AUTHENTICATION,"simple");env.put(Context.SECURITY_PRINCIPAL,user);env.put(Context.SECURITY_CREDENTIALS,password);env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");try{ctx=newInitialDirContext(env);log.info("SaiLunLoginActionAD域验证成功!");}catch(AuthenticationExceptione){log.error("SaiLunLoginActionAD域验证失败!!!",e);returnfalse;}catch(Exceptione){log.error("SaiLunLoginActionAD域验证异常!!!",e);returnfalse;}finally{if(ctx!=null){try{ctx.close();}catch(NamingExceptione){log.error("SaiLunLoginActionInitialDirContext关闭异常...",e);}}}