dev2dev 首页 > 资源中心 > 技术文章
配置WLP和Microsoft AD域之间的单点登录
在WebLogic Platform8.1中提供了用于和Windows客户端进行Single Sign-On的Single Pass Negotiate Identity Assertion Provider。结合Microsoft Active Diretory,通过该Provider可以轻松完成WebLogic Platform8.1和Windows客户端的Single Sign-On。 下面我们介绍其配置过程。
目录
系统环境:
WLP814英文版,运行在XP上
AD: WIN2000 advantage server 客户端:IE6, 运行在XP上
配置AD
AD主机 192.168.0.2 domain: BEACS0.BEA.COM Hostname: beacs

同时运行了 dns server(可如下简单配置) 其他主机均使用本主机为域名服务器。 
etc/hosts 加入 wls主机记录(域名... adtest.com可自定义)
192.168.0.1 CHXU01.adtest.com CHXU01.ADTEST.COM 在 AD 中加入一个与wls主机名对应的用户(不要域名后缀) CHXU01/Password01!(用户/密码),为该用户使用DES加密,改为DES加密后,最好重新设置密码.
加入其他要测试的用户名: xcjing (无须其他特别设置) 创建Weblogic server的系统管理员用户:weblogic. 创建一个GROUP: DemoGrp,并把上面创建的CHXU01,xcjing,weblogic用户加到该组中 使用win2000中附加的相关工具进行下一步操作(参见文档说明) setspn -A HTTP/CHXU01.ADTEST.COM CHXU01 ktpass -princ HTTP/CHXU01@BEACS0.BEA.COM -pass Password01! -mapuser ChXU01 -out c:\CHXU01.HTTP.keytab
注意: 如果在测试时,出现WLP CONSOLE出现要输入密码的情况, 可能是AD中采用的密码算法和WLS中的不一样(从LOG可以看出采用的算法),要加 crypto参数,直接指定加密算法. 
将swen.HTTP.keytab拷贝至wls主机 domain目录下

配置AD Authentication Provider



当把AD AUTHENTICATION PROVIDER设置为SUFFICENT时,必须把AD中的weblogic用户所在的组加入到Admin Role中,否则WLP启动不了. 
验证AD AUTHENTICATION PROVIDER配置成功: 


配置Single Pass Negotiate Identity Assertion provider
WLP主机 192.168.0.1 etc/hosts 加入 AD主机记录
beacs.BEACS0.BEA.COM 在domain目录按文档建立.conf文件 krb5Login.conf
com.sun.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule required
principal="HTTP/CHXU01@BEACS0.BEA.COM" useKeyTab=true
keyTab=CHXU01.HTTP.keytab storeKey=true;
};
com.sun.security.jgss.accept {
com.sun.security.auth.module.Krb5LoginModule required
principal="HTTP/CHXU01@BEACS0.BEA.COM" useKeyTab=true
keyTab=CHXU01.HTTP.keytab storeKey=true;
};
在weblogic admin console中,realm> Authentication Providers,配置相关的identity provider: Configure a new Single Pass Negotiate Identity Asserter... 点"create" 把左边可选的两种协议都选中并enable.到右边。 
重新排序,把这个provider的顺序提前第一个, AD AUTHENTICATION PROVIDER在第二个. 
更改启动脚本(打开debug确认配置情况,成功后再关闭)
set ADSSO=-Dsun.security.krb5.debug=true
-Djava.security.krb5.realm=BEACS0.BEA.COM
-Djava.security.krb5.kdc=beacs.BEACS0.BEA.COM
-Djava.security.auth.login.config=krb5Login.conf
-Djavax.security.auth.useSubjectCredsOnly=false
-Dweblogic.security.enableNegotiate=true
-DDebugSecurityAdjudicator="true"
-Dweblogic.debug.DebugSecurityAtn="true"
-Dweblogic.debug.DebugSecurityAtz="true"
-Dweblogic.Debug.DebugSecurityATN=true加入: %ADSSO%%JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% %ADSSO%
-Dweblogic.Name=%SERVER_NAME%
-Djava.security.policy=%WL_HOME%\server\lib\weblogic.policy %PROXY_SETTINGS% %SERVER_CLASS%
把WEBLOGIC SERVER的LOG打开: 

修改Portal应用
在web.xml中加入:
<security-constraint>
<display-name>Security Constraint on Conversation </display-name>
<web-resource-collection>
<web-resource-name>Conversation web service </web-resource-name>
<description>.... </description>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>demoRole</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config> <security-role>
<role-name>demoRole</role-name>
</security-role>
在weblogic.xml中加入:
<security-role-assignment>
<role-name>demoRole</role-name>
<principal-name>DemoGrp</principal-name>
</security-role-assignment>
写一个测试用的PORTLET:
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="netui-tags-databinding.tld" prefix="netui-data"%>
<%@ taglib uri="netui-tags-html.tld" prefix="netui"%>
<%@ taglib uri="netui-tags-template.tld" prefix="netui-template"%>
<netui:html>
<head>
<title>
Web Application Page
</title>
</head>
<body>
<p>
hello: <%=request.getRemoteUser()%>
</p>
</body>
</netui:html>

配置IE
把该机器加入到DOMAIN:BEACS0.BEA.COM中 在hosts文件中加如:
192.168.0.1 CHXU01.ADTEST.COM 192.168.0.1 CHXU01.adtest.com 192.168.0.2 beacs.BEACS0.BEA.COM
将 *.ADTEST.COM 加入到 ie 的 intranet 列表中。并检查IE的请配置如下:






如果该客户端已经加入域,可以直接访问应用,并显示用户名 如果该客户端还未加入域,将弹出网络密码输入框(windows),输入用户名、密码、域,即可正常访问

到此,大功告成。
| 作者简介 |
|
dev2dev ID: xcjing,BEA 资深技术顾问,加入BEA中国多年,在门户技术、RFID解决方案上有着丰富的经验。 |
作者其它文章
|