这是本人的第一篇技术博客,对于一个以前从来没有听说过windows AD服务的新人来说,从零开始是很艰辛的。整理这些差不多用了一周的时间,希望可以对后来人可以少走点弯路,废话不多说了现在开始:
基本概念:(来源网络,试着看一下,不用)
LDAP是什么?
LDAP是轻量级目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.
一般用来构建集中的身份验证系统可以减少管理成本,增强安全性,避免数据复制的问题,并提高数据的一致性。
ActiveDirectory是什么?
Active Directory存储了有关网络对象的信息,并且让管理员和用户能够轻松地查找和使用这些信息。Active Directory使用了一种结构化的数据存储方式,并以此作为基础对目录信息进行合乎逻辑的分层组织。
①基础网络服务:包括DNS、WINS、DHCP、证书服务等。
②服务器及客户端计算机管理:管理服务器及客户端计算机账户,所有服务器及客户端计算机加入域管理并实施组策略。
③用户服务:管理用户域账户、用户信息、企业通讯录(与电子邮件系统集成)、用户组管理、用户身份认证、用户授权管理等,按省实施组管理策略。
④资源管理:管理打印机、文件共享服务等网络资源。
⑤桌面配置:系统管理员可以集中的配置各种桌面配置策略,如:界面功能的限制、应用程序执行特征限制、网络连接限制、安全配置限制等。
⑥应用系统支撑:支持财务、人事、电子邮件、企业信息门户、办公自动化、补丁管理、防病毒系统等各种应用系统。
实现代码:(这才是重点)
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
public class Testad3 {
public static void main(String[] args) {
String userName = "zc"; //用户名称
String password = "@WSX1qaz"; //密码
String host = "192.168.246.128"; //AD服务器
String port = "389"; //端口
String domain = "@ruanchen.com"; //邮箱的后缀名
String url = new String("ldap://" + host + ":" + port);
String user = userName.indexOf(domain) > 0 ? userName : userName + domain;
Hashtable env = new Hashtable();
DirContext ctx;
env.put(Context.SECURITY_AUTHENTICATION, "simple");//以simple方式发送
env.put(Context.SECURITY_PRINCIPAL, user); //不带邮箱后缀名的话,会报错,具体原因还未探究。高手可以解释分享。
env.put(Context.SECURITY_CREDENTIALS, password);
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, url);
try {
ctx = new InitialDirContext(env);
ctx.close();
System.out.println("验证成功!");
} catch (NamingException err) {
err.printStackTrace();
System.out.println("验证失败!");
}
}
}
本文连接:
更多资料: http://www.byywee.com/page/M0/S215/215725.html
http://stackoverflow.com/questions/267869/configuring-tomcat-to-authenticate-using-windows-active-directory
http://topic.csdn.net/u/20081112/17/016848ab-5e5a-4da3-a384-2d09bd09ed89.html