ldap AD整合工具类

package com.jh.jcs.platform.common.service.impl;


import java.util.Hashtable;


import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;


import org.springframework.stereotype.Component;


import com.jh.jcs.framework.common.util.StringUtil;


@Component("adUtil")
public class AdUtil {

private static javax.naming.directory.DirContext ctx;


/**
* * 返回用户查询接口 *

* @param DN
*            查找范围 ou=test,dc=abcd,dc=com *
* @param filter
*            过滤条件 cn=* *
* @param myserach
*            搜索范围 *
* @return LDAP标准接口 *
* @throws Exception
*/
public javax.naming.NamingEnumeration getFilter(DirContext ctx,String DN, String filter,
int myserach) throws Exception {
try {
NamingEnumeration em;
SearchControls con = new SearchControls();
con.setSearchScope(SearchControls.SUBTREE_SCOPE);
String returnedAtts[] = { "cn","sn","userAccountControl","sAMAccountName" };
con.setReturningAttributes(returnedAtts);
em = ctx.search(DN, filter, con);
return em;
} finally {


}
}


/**
* * 设置条件查找 *

* @param dn
*            查找的根结点 *
* @param filter
*            查找条件 *
* @param level
*            查找范围 *
* @return 返回一个由DN组成的JAVA STRING 列表 *
* @throws Exception
*/
public boolean getfilterNodes(DirContext ctx,String dn, String filter, int level)
throws Exception {
boolean flag = false;
NamingEnumeration em = getFilter(ctx,dn, filter, level);
while (em != null && em.hasMoreElements()) {
SearchResult rs = (SearchResult) em.nextElement();
String control = (String) rs.getAttributes().get("userAccountControl").get();
control = control.trim();
String sAMAccountName = (String) rs.getAttributes().get("sAMAccountName").get();
if(control.equals("512")||control.equals("66048")){
flag = true;
}
System.out.println(control);
System.out.println(sAMAccountName);
}
return flag;
}


public static javax.naming.directory.DirContext getAdContext(String userName,String userPass){
String host = "10.1.2.9";
String port = "389";
String domain = "nclntdomain";
Hashtable env = new Hashtable();
DirContext ctx;
String user = domain + "\\" + userName;
String passwd = userPass;
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, user);
env.put(Context.SECURITY_CREDENTIALS, passwd);
String url = new String("ldap://" + host + ":" + port);
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, url);
try {
ctx = new InitialDirContext(env);
System.out.println("验证成功!");
return ctx;
} catch (NamingException err) {
err.printStackTrace();
System.out.println("验证失败!");
return null;
}
}

public static javax.naming.directory.DirContext getAdContext(){
ctx = getAdContext("jinher", "ncl@123456");
return ctx;
}

public boolean isADLogin(String userAccount){
boolean flag = false;
if(StringUtil.isNotEmpty(userAccount)){
try {
flag = this.getfilterNodes(getAdContext(), "DC=newchinalife,DC=com", "(&(objectclass=user)(sAMAccountName="+userAccount+"))", 1);
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
if(ctx != null){
try {
ctx.close();
} catch (NamingException e) {
e.printStackTrace();
}
}
}
}
return flag;
}

// public boolean isAdlogin(){
//
// }


public static void main(String[] args) {
AdUtil test = new AdUtil();
try {
javax.naming.directory.DirContext ctx = AdUtil.getAdContext("jinher", "ncl@123456");
String[] strIds = { "name", "cn"}; 
test.getfilterNodes(ctx, "DC=newchinalife,DC=com", "(&(objectclass=user)(sAMAccountName=wangxx))", 1);
           System.out.println("ok"); 
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("end");

}

}





=========================================以上为java类,以下为页面JS,用来获取用户的域===========================================

$(function(){
  var WshNetwork = new ActiveXObject("WScript.Network");
var WshShell = new ActiveXObject ("WScript.Shell");
  var lDomain = WshNetwork.UserDomain;
  var luName = WshNetwork.UserName;
try{
var regeditName = WshShell.RegRead ("HKCU\\Volatile Environment\\USERDNSDOMAIN");
if( (regeditName=="newchinalife.com" || regeditName=="NEWCHINALIFE.COM") ){
$.ajax({
url:"${ctx}/platform/sys/login!loginAD.action?accounts="+luName,
success:function(data){
if(data=="success"){
if(('ontouchstart' in window)){
window.location.href='${ctx}/platform/sys/login!portal.action';
}else{
openWindowWithPost("${ctx}/platform/sys/login!portal.action");
}
}else if(data=="noad"){
alert("您的域用户不存在或被禁用,请输入用户名密码登陆");
}else if(data=="nouser"){
alert("您的域用户并不在系统用户中,请输入用户名密码登陆");
}else{
alert("您的AD登录出错,请输入用户名密码登录");
}
},error:function(XMLHttpRequest,textStatus,errorthrow){
                    alert("XMLHttpRequest.status="+XMLHttpRequest.status);   
  alert("您的AD登录出错,请输入用户名密码登录");
               }
})
}else{
alert("您不是域用户,请输入用户名和密码来进行登录");
}
}catch(e){
alert("您不是域用户,请输入用户名和密码来进行登录");
}
  WshNetwork = null;
WshShell = null;
 });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值