搜索文章:

首页  |  Java技术  |  Asp.net  |  Asp编程  |  VC/C++  |  Delphi  |  VB编程
上一篇:WebLogic Platform 7.0 >>

配置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。 下面我们介绍其配置过程。

目录

  • 系统环境
  • 配置AD
  • 配置AD Authentication Provider
  • 配置Single Pass Negotiate Identity Assertion provider
  • 修改Portal应用
  • 配置IE

系统环境:

  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),输入用户名、密码、域,即可正常访问

  到此,大功告成。

相关文章:
© 2006   www.java-asp.net