这两天在搞单点登录,功夫不负有心人,最后还是搞出来了,在网上看了好多文章,自己实际操作的时候还是会遇到很多问题。罗列一下设置的过程,也算是纪念一下这两天的工作。
首先 需要用到两台服务器(一台不行), 一台作为AD服务器, 另外一台当然就是BO服务器了。
环境: Windows Server 2003 En, BO XI 3.1
假设:
AD 服务器机器名:vwindows2003AD
BO 服务器机器名: vwindows03 IP:192.168.1.7
以下括号内标注的是所操作的机器名。
1. 安装和配置AD服务器, 网上教程一大堆, 我就不详述了。
域DNS: AD.TEST
域:AD
2. 配置用户(vwindows2003AD)
新建一个叫BO的组,然后新建一个叫boservice的用户,右击boservice用户,进入属性,切换到delegation选项卡, 选择”Trust this user for delegation to any service (Kerberos only)” ,然后确定。
注意: 有的机器可能没有delegation选项卡, 只要右击左边窗格中的域名(AD.TEST),然后选择”Raise Domain Functional Level”, 然后在下拉框中选择”Windows Server 2003″ ,点击确定即可。
进入组策略(开始–运行–输入gpedit.msc)–Computer Configuration–Windows Configuration–Security Configuration–Local Security Policy–User Righte Assignment,给boservice或者其所在的用户组配置以下权限:
• Act as part of Operating System
• Log on as a Batch Job
• Log on as a Service
• Replace a Process Level Token
3. 使用ktpass(vwindows2003AD)
在确保安装了Windows Support Tools(第一张安装盘中,安装\Support\Tools\suptools.msi)之后,把support tools的安装路径(默认是C:/Program Files/Support Tools/)添加进环境变量。
在C盘下新建名为mybo的文件夹,打开命令行窗口, 输入以下命令:
ktpass -out c:/mybo/BOSSO.keytab -princ BOSSO/boservice.AD.TEST@AD.TEST -mapuser boservice@AD.TEST-pass mypassword -kvno 255 -ptype KRB5_NT_PRINCIPAL -crypto RC4-HMAC-NT
4. 打开C:/mybo/文件夹,将生成的BOSSO.keytab拷贝到BO服务器的C:/winnt下(如果没有该文件夹,则新建一个)。
5. 在AD服务器上, 运行如下命令。
setspn -a HTTP/vwindows2003 boservice
setspn -a HTTP/vwindows2003.AD.TEST boservice
setspn -a HTTP/192.168.1.7 boservice
结果应该和下面类似:
HTTP/vwindows2003
Updated object
Registering ServicePrincipalNames for CN=boservice,CN=Users,DC=POWER,DC=INTERNAL
HTTP/vwindows2003.AD.TEST
Updated object
Registering ServicePrincipalNames for CN=boservice,CN=Users,DC=POWER,DC=INTERNAL
HTTP/192.168.1.7
Updated object
6. 用管理员帐号登录BO服务器(vwindows03),将BO服务器添加进AD域 –> 将BO服务器的DNS设置为AD服务器的IP,接着重启BO服务器。
然后将AD\boservice添加进本地的管理员组。
7. 登录CMC,Authentication–Windows AD–Enable Windows AD–点击AD Administrator Name旁边的用户名(初次设置时是双引号),完成如下图设置, 点击update
完成后点击update。
9. 在BO服务器上, 运行services.msc,进入windows 服务,右击SIA服务,属性–>Logon–>修改运行身份为AD\boservice,然后重启SIA服务。
10. 在BO服务器上创建”c:\winnt\bsclogin.conf”, 并输入以下内容:
com.businessobjects.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule required debug=true;
};
11. 在BO服务器上创建”c:\winnt\krb5.ini”, 并输入以下内容:
[libdefaults]
default_realm = AD.TEST
dns_lookup_kdc = true
dns_lookup_realm = true
udp_preference_limit = 1
[realms]
AD.TEST = {
kdc = VWINDOWS03AD.AD.TEST
default_domain = AD.TEST
}
12. 在BO服务器上将C:\Program Files\Business Objects\javasdk\bin 添加进环境变量,
并运行如下命令
kinit boservice
接着输入boservice的密码。
运行结果如下所示:
13. 在BO服务器上, 开始–所有程序–Tomcat–Tomcat configuration–Java,在Java Options 中添加如下内容:
-Djava.security.auth.login.config=C:\winnt\bscLogin.conf
-Djava.security.krb5.conf=C:\winnt\Krb5.ini
-Djcsi.kerberos.maxpacketsize=0
-Djcsi.kerberos.debug=true
14. 在BO服务器上修改 “C:\Program Files\Business Objects\Tomcat55\webapps\InfoViewApp\WEB-INF\web.xml”中的
- “authentication.visible”值为 true
- “authentication.default”值为secWinAD
- “siteminder.enabled”值为false
- “idm.realm”值为AD.TEST
- “idm.princ”值为BOSSO/boservice.AD.TEST
- 在”idm.princ”结点下方添加如下语句
<init-param>
<param-name>idm.keytab</param-name>
<param-value>c:\winnt\BOSSO.keytab</param-value>
</init-param>
移除filter和filter-mapping结点周围的注释标记
15. 在BO服务器上 将”C:\Program Files\Business Objects\Tomcat55\conf\server.xml”中的
<Connector URIEncoding=”UTF-8″ acceptCount=”100″ connectionTimeout=”20000″ disableUploadTimeout=”true” enableLookups=”false” maxHttpHeaderSize=”8192″ maxSpareThreads=”75″ maxThreads=”150″ minSpareThreads=”25″ port=”80″ redirectPort=”8443″/>
修改为
<Connector URIEncoding=”UTF-8″ acceptCount=”100″ connectionTimeout=”20000″ disableUploadTimeout=”true” enableLookups=”false” maxHttpHeaderSize=”16384″ maxSpareThreads=”75″ maxThreads=”150″ minSpareThreads=”25″ port=”80″ redirectPort=”8443″/>
16. 在BO服务器上, 运行services.msc,进入windows 服务,右击Tomcat服务,属性–>Logon–>修改运行身份为本地系统账户,如下图所示:
17. 重启Tomcat服务。
至此, Infoview + Windows AD SSO 配置完毕。
使用其他机器登录Infoview界面(或者使用域账户登录BO服务器),在弹出对话框中输入域用户,就能登陆Infoview了。
呵呵, 终于写完了,写的过程中还是有不少收获,看来学到点东西, 还是要复述一下, 才能加深印象。