libScriptAD 库(Java程序)
/* 『函数库功能』
* 此函数库根据用户名和密码,连接AD Server,进行用户名和密码验证
* 『函数库接口』
* 用户输入的用户名和密码
* 『函数库返回值』
* success:AD验证成功
* notuser: AD中未找到此用户
* passerror: 用户密码错误
* 『备注』
* 此代码可在OA登录时应用
*/
import lotus.domino.*;
import javax.naming.*;
import javax.naming.directory.*;import java.util.Hashtable;
//构造函数ADAuth
public class ADAuth {
static String ldapip = "";
public ADAuth(String strIP)
{
//获得LDAP的IP地址
ldapip = strIP;
}
public static String login( String email, String password ) {
/** 根据用户名和密码进行验证 **/
Hashtable env = null; /** 目录 */
DirContext ctx = null; /** 认证狀态 */
boolean logged = true; env = new Hashtable();
env.put( Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
// 连接LDAP
env.put( Context.PROVIDER_URL, "ldap://"+ldapip+":389/");
// 使用 username + password 进行认证
env.put( Context.SECURITY_AUTHENTICATION, "simple" );
// 使用用户的完整 email ,也就是 AD 中的 ${sAMAccountName}@your.domain.name
//验证用户名
env.put( Context.SECURITY_PRINCIPAL, email );
//验证密碼
env.put( Context.SECURITY_CREDENTIALS, password );
String autheStr="";
try {
ctx = new InitialDirContext( env );
logged = true;
} catch( AuthenticationException authe ) {
// 授权失败
logged = false;
autheStr=authe.toString();
System.out.println(autheStr);
} catch( Exception e ) {
// 不明错误
e.printStackTrace();
logged = false;
} finally {
try {
// 把目录关闭
ctx.close();
} catch ( Exception Ignore ) { logged = false;}
}
//验证返回结果
String returnint="failure";
if (logged) {
returnint="success"; //成功
}
if (autheStr.indexOf("data 525")>=0) {
returnint="notuser";//用户不存在
}
if (autheStr.indexOf("data 52e")>=0) {
returnint="passerror";//密码错误
}
return returnint;
}
}