JAVA技术 /billzw  发表于2006-08-02

1.    概述
    当前解决的途径如下:
    采用Java的JNDI通过LDAP协议去操作AD(Windows 2000 Server Active Directory的简称,下同),实现用户和密码与OA系统同步。用户登陆OA系统时,同时登陆mail。
这样就实现的单点登陆。
2.    M$ Active Directory安装
在独立服务器上安装 Windows 2000 Server 或 Windows 2000 Advanced Server 之后,运行"Active Directory 向导"以创建新的 Active Directory 目录林或域,并将 Windows 2000 服务器转换为目录林中的第一个域控制器 (DC)。若要将 Windows 2000 服务器转换为目录林中第一个域控制器,请按照下列步骤操作: 
1.    将 Windows 2000 光盘插入光驱中。 
2.    单击开始,单击运行,然后键入 dcpromo。 
3.    单击确定以启动 Active Directory 安装向导,然后单击下一步。 
4.    单击新域的域控制器,然后单击下一步。 
5.    单击创建一个新的域目录树,然后单击下一步。 
6.    单击创建新的域目录林,然后单击下一步。 
7.    为新的 Active Directory 指定完整的 DNS 名称。如:mail.yuanling.gov.cn单击下一步。 
8.    接受域的默认 NetBIOS 名(如:yuanlingmail)。单击下一步。 
9.    将数据库和日志文件的位置设置为在默认设置 c:/winnt/ntds 文件夹下,然后单击下一步。 
10.    将 Sysvol 文件夹的位置设置为默认设置 c:/winnt/sysvol 文件夹,然后单击下一步。 
11.    单击安装和配置 DNS,然后单击下一步。 
12.    单击只与 Windows 2000 服务器相兼容的权限,然后单击下一步。 
13.    因这是实验室环境,将"目录服务恢复模式的管理员"密码留为空白。请注意,在完整的生产环境中,应通过使用安全密码格式进行设置。单击下一步。 
14.    检查并确认所选择的选项,然后单击下一步。 
15.    在安装 Active Directory 过程中,正在配置 Active Directory进度表出现。注意,该操作将需要几分钟。 
16.    出现提示时,重新启动计算机。计算机重新启动后,确认已经为新的域控制器创建了 DNS 服务位置记录。若要确认已创建 DNS 服务位置记录,请按照下列步骤操作: 
17.    检查DNS设置。
a.    单击开始,单击程序,单击管理工具,然后单击 DNS 以启动"DNS 管理"控制台。 
b.    单击服务器名称,单击正向搜索区域,单击域名,然后展开该域。 
c.    确认 _msdcs、_sites、_tcp 和 _udp 文件夹已存在。这些文件夹和它们包含的服务位置记录对于 Active Directory 和 Windows 2000 的运行至关重要。

3.    安装企业根证书服务,并配置自动证书分配
参看在《中小型公司建立企业根证书颁发机构 (CA)》
http://www.microsoft.com/china/technet/security/sgk/build_ent_root_ca.mspx
此文中涉及到操作系统策略,请仔细对照。

4.    安装M$ Exchange Server

参见《Exchange 2000 server的安装实录》。
注:Exchange安装完成后,会自动扩展M$ AD,新生成选择页。是”Exchange Genaral”和”Email Address”,见下图。
 

5.    安装AD管理工具(可选,用于LDAP连接的测试)
1)    将Windows 2000 Server的光盘插入光驱;
2)    定位到 光盘:/SUPPORT/TOOLS目录,点击Setup.exe,进行安装;
3)    安装完成后,直接在命令提示符下运行 ldp 命令,即可打开AD管理工具;如下图
 
6.    LDAP与SSL

1)    在IE中输入 https://mail.yuanling.gov.cn:636,将弹出一个窗口,
 
2)    点击以后不现显示该警告,再点击确定,三四秒种后,将弹出一个客户身份验证窗口,
  
3)    点击确定,将弹出一个安全警报窗口
 
4)    点击“查看证书”,弹出证书窗口
 
5)    选择“详细信息”页,点击“复制到文件”
 

6)    这时,将启动“证书导出向导”,选择格式为“Base-64 encoded X.509 (.CER)”,将其导出到本地,如D:根目录下,命名为client.cer
  
7)    接下来的工作就是要将保存下来的证书存储到TrustStore中,我们这里要用keytool命令,这是JDK自带的,在运行keytool之前,必先安装JDK (我们采用的是JDK 1.4),并确认JDK的bin目录已加设到path中。命令格式如下:keytool -import -keystore trustedcerts -alias yl  -file client.cer
此时,生成了trustedcerts证书文件。
 
8)    完成

7.    用CSVDE来导出AD中的信息
CSVDE也是AD管理工具中的一种。
在创建AD用户的同时,应当创建Exchange Server 的mailbox,这里要用到几个系统变量,需要从用CSVDE中导出的文件中查得。
命令格式:CSVDE -f csvde.csv
用Excel打开这个文件,找到homeMDB,homeMTA,msExchHomeServerName三个变量。在创建mailbox时应当用到。

-------------------------------------------------------------------------------------------------- 
  
package com.sunyard.sunoa.security.LDAP; 
  
….  
  
public class ADConnection { 
  
…. 
  
     String homeMDB = "CN=Mailbox Store (HA),CN=First Storage Group,CN=InformationStore,CN=HA,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=First Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=hzyl,DC=com"; 
  
     newAttributes.put(new BasicAttribute("homeMDB", homeMDB)); 
  
     String homeMTA = "CN=Microsoft MTA,CN=HA,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=First Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=hzyl,DC=com"; 
  
     newAttributes.put(new BasicAttribute("homeMTA", homeMTA)); 
  
     String msExchHomeServerName = "/o=First Organization/ou=First Administrative Group/cn=Configuration/cn=Servers/cn=HA"; 
  
     newAttributes.put(new BasicAttribute("msExchHomeServerName", 
  
                                          msExchHomeServerName)); 
  
…. 
  
} 
  
--------------------------------------------------------------------------------------------------



8.    注意点
1)    系统部署的服务器如果与AD所在的服务器不是同一台,那么应当将系统所在的服务器的网卡DNS设置为AD或本网内的DNS服务器,使AD的域名可被解析到AD所在的服务器;如对DNS不了解,可先上微软网站去学习一下;
2)    系统中对连接AD的服务器地址指定一定要为域名,否则无法通过SSL的验证;
3)    M$ AD不同于其他目录服务器,凡涉及到用户密码更新的都需要通过SSL。