跳到导航
dev2dev.bea.com.cn
首页 资源中心 dev2dev学堂 在线技术论坛 专家Blog User Group CodeShare
dev2dev 首页 > 资源中心 > 技术文章
配置WLP和Microsoft AD域之间的单点登录

时间:2006-06-20
作者:徐春金
浏览次数:
本文关键字:WebLogic Portal单点登录安全SSOSingle Sign-OnMicrosoft
文章工具
推荐给朋友 推荐给朋友
打印文章 打印文章

  在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

图1

  同时运行了 dns server(可如下简单配置)

  其他主机均使用本主机为域名服务器。

图2

  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参数,直接指定加密算法.

图3

  将swen.HTTP.keytab拷贝至wls主机 domain目录下

配置AD Authentication Provider

图1

图2

图3

图4

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

图5

  验证AD AUTHENTICATION PROVIDER配置成功:

图6

图7

配置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.到右边。

图8

  重新排序,把这个provider的顺序提前第一个, AD AUTHENTICATION PROVIDER在第二个.

图9

  更改启动脚本(打开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打开:

图10

修改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的请配置如下:

图1

图2

图3

图4

图5

图6

  如果该客户端已经加入域,可以直接访问应用,并显示用户名

  如果该客户端还未加入域,将弹出网络密码输入框(windows),输入用户名、密码、域,即可正常访问

图7

  到此,大功告成。

 作者简介
dev2dev ID: xcjing,BEA 资深技术顾问,加入BEA中国多年,在门户技术、RFID解决方案上有着丰富的经验。
dot dot dot

dot
  作者其它文章
您对本文的评价
您对这篇文章的看法如何?
太棒了!5分 不错啊 4分 一般般 3分 有待提高 2分 不好 1分