跳到导航
BEA Dev2Dev Oracle and BEA
首页 资源中心 dev2dev学堂 在线技术论坛 User Group CodeShare
dev2dev 首页 > 资源中心 > 专家Blog > 专家Blog文章
用WebLogic Identity Asserter实现单点登录

时间:2007-03-15
作者:Peter Laird
浏览次数:
本文关键字:javasoaWebLogic PortalinteropIdentity Asserter
文章工具
推荐给朋友 推荐给朋友
打印文章 打印文章

  本周我参与了interop(网络化企业应用与软件互操作性研究)项目的工作,做了一些好长时间没有做过的事情——为WebLogic门户开发SSO(单点登录)解决方案。在这种情况下,我的WebLogic Portal 9.2实例需要在请求头中使用令牌并从中派生身份。在WebLogic世界中,Identity Asserter是完成这一工作的工具。这篇博客详细介绍了用WebLogic服务器(或WebLogic门户)实现定制Identity Asserter的步骤。

Identity Asserter和单点登录

  Identity Asserter是一个可插入的WebLogic组件,它能够通过在请求头、cookie或其他机制中检测令牌以决定用户的身份。这个特性在为WebLogic项目实现Single Sign On(单点登录,SSO)时很有用。它允许外部实体验证用户并使WebLogic能够允许该验证。

  Identity Asserter并不是新事物。它们在WebLogic中已存在多年了。开箱即用,WebLogic提供的Identity Asserter支持多种令牌类型:X509证书、SPNEGO令牌、SAML断言令牌和CORBA Common Secure Interoperability version 2 (CSIv2)。另外,第三方Identity Management供应商通常会为您提供预置的WebLogic Identity Asserter。

  然而,有时会需要定制Identity Asserter。这是我的项目中研究的方法。我的情况是一个外部的代理服务器拥有验证能力并将令牌放置在识别用户身份的WLP请求中。我需要一个定制Identity Asserter来查找该令牌并对其进行解码。为了构建我的定制Identity Asserter,我采用了dev2dev上的样例并加以修改以适应我的需要。我已经将它部署在WebLogic Portal 9.2上(构建在WebLogic Server 9.2上)。这篇博客下面的部分将解释开发和配置步骤。

开发和配置定制Identity Asserter

  下面是构建和配置Identity Asserter的步骤列表:

  0. 从dev2dev上下载样例Identity Asserter

  • dev2dev Codeshare 上可以得到
  • 查找名为"Sample Security Providers"的项目
  • 该样例可能不会正好适合您的Weblogic版本,但是它们很可能兼容8.1之后的版本
  • 下载包括一个build系统和其他类型提供程序的样例

  1.解压并改变SimpleSampleIdentityAsserter代码和描述符

  • 查看src\providers\identityassertion\simple,java和.xml文件都要修改
  • 搜索"SamplePerimeterAtnToken"并用定制令牌/请求头名称替换所有文件中的"SamplePerimeterAtnToken"
  • 在SimpleSampleIdentityAsserterProviderImpl.java中进行如下修改:

  在样例代码的assertIdentity方法中处理TOKEN_PREFIX的地方,需要将代码修改为解析该令牌的值(或许要对其进行解密),并派生出用户名。

  这里所做的工作完全是特定于所期望的令牌类型的。

  如果不想让容器使用Base64解码方法自动解码令牌负载,应该确保在.xml描述符中有这个内容:

<MBeanAttribute
Name =  "Base64DecodingRequired"
Type =  "boolean"
Writeable =  "false"
Default =  "false"
/>

  2. 转到WLS/WLP域home/bin并在命令行shell中执行setDomainEnv.cmd/sh。

  3. 导航回存在build.xml的SSPI样例目录的root dir。

  4. 用默认Ant task("ant")进行编译。build系统将jar放入BEA_HOME/weblogic92/lib/mbeantypes/wlSecurityProviders.jar。

  5. 编辑webapp的web.xml,webapp将要参与Identity Assertion(身份断言)和添加/更新 login-config元素:

 
  <login-config>
 <auth-method>CLIENT-CERT</auth-method>
 <realm-name>Legacy_ThisElementIsIgnored</realm-name> 
</login-config>

  6.启动WLS/WLP (startWebLogic.cmd/sh)。

  7.启动WLS控制台(通常是http://localhost:7001/console),并创建该Identity Asserter的新实例。

  导航到Security Realms -> My Realm -> Providers tab -> Authentication sub tab

  单击"Lock & Edit"

  单击"New"

  Name = [give it a meaningful name] Type = SimpleSampleIdentityAsserter

  单击"Release Configuration"

  8. 重启服务器。

  9. 以正确传播该令牌的方式用浏览器定位到Web应用程序中的任何资源。

  这时应该看到来自Identity Asserter中debug的输出,表明用户已经被识别。如果用户名在配置的身份验证提供程序中,请求将会被验证。

  接下来的步骤:作为留给读者的练习:

  用更合适的名字重命名SimpleSampleIdentityAsserter

  在.java和.xml文件中更改SimpleSampleIdentityAsserter首选项

  更新build以反映名称的改变

  其他资源

  有关SSO:

  Identity Asserters for 9.2 官方文档

  dev2dev Codeshare 示例

  SAML Configuration: Vikrant Sawant的一篇关于如何配置SAML的好文章

  有关WLP

  wlp.bea.com:WebLogic门户公共演示网站 (Mashup、 Ajax、 Web 2.0)

  Josh Lannin's Blog:我们的产品组经理揭示Oracle的产品策略

  Enterprise Mashups with WLP:我所做的有关企业Mashup的Webinar(网上技术交流会)

  原文出处:http://dev2dev.bea.com/blog/plaird/archive/2007/02/implementing_si.html

dot dot dot

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