配置Portal 使用CAS 进行SSO
在许多项目中,客户由于成本或者多方面考虑,会使用一些开源的SSO方案。CAS正是其中使用较多的一个。本文结合自己做的测试,说明如何在PORTAL上使用CAS。
CAS 介绍
CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:
* 开源的企业级单点登录解决方案。
* CAS Server 为需要独立部署的 Web 应用。
* CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
CAS 原理和协议
从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。
标准CAS的重定向是利用FILTER来完成的。对于PORTAL而言,如果使用FILTER进行登录的拦截,LTPA TOKEN无法生成。因此需要考虑其它的方式。
参考CAS官网WIKI上一篇http://www.ja-sig.org/wiki/pages/viewpage.action?pageId=19314 文章所描述的对WAS进行CAS客户端配置。使用TAI方式进行登录。大致的原理如下图。
1、用户访问PORTAL的请求被重定向到CAS。
2、CAS判断用户是否已登录。若是,转回PORTAL。若否,登录建立CAS SESSION再转PORTAL。
3、PORTAL 检测用户是否已登录PORTAL(LTPA)。若是,则进入页面。若否,转TAI。TAI通过配置的属性检查CAS TICKET的有效性。由于WAS 配置TAI后,就可以由信任的TAI进行用户身份验证,而WAS的安全机制不作其它的验证工作。CAS TAI验证用户成功后,即返回用户的相关信息由WAS的安全模块根据这些信息创建WAS 的SESSION(LTPA)。
配置过程比较简单:
1、从http://www.ja-sig.org/wiki/pages/viewpage.action?pageId=19314上下载CasClientWebsphere-x.x.x.jar和 casclient-2.1.1.jar 放到<WPSInstallDirectory>/AppServer/lib/ext的目录中。
2、在WAS管理控制台中配置TAI。
这三个属性是必须的。SSL的端口如果非443就需要写在URL上。
CAS_VALIDATION_URL = your cas server url, ex : 'https://myCasServer/cas/serviceValidate'
PRINCIPAL_PREFIX= prefix to add to principal, in order to allow mapping for groups, ex : 'uid='; default is ""
PRINCIPAL_SUFFIX = suffix to add to principal, in order to allow mapping for groups, ex : ',OU=myOu, O=myCompany' default is ""
3、配置SSL。
方式一:
用IE打开CAS的 https://myCasServer/cas/serviceValidate地址。保存其证书为.cer文件。
(也可以使用CAS服务器端签署的客户证书)
用IKEYMAN将证书添加到 DummyClientTrustFile.jks的签署人证书中。
在PORTAL的JVM属性中添加:
-
Name="java.protocol.handler.pkgs"
Value="com.ibm.net.ssl.internal.www.protocol"
-
Name="javax.net.ssl.keyStoreType"
Value="jks"
-
Name="javax.net.ssl.keyStorePassword"
Value="WebAS"
-
Name="javax.net.ssl.trustStore"
Value="${USER_INSTALL_ROOT}/etc/DummyClientTrustFile.jks"
-
Name="javax.net.ssl.trustStorePassword"
Value="WebAS"
-
Name="javax.net.ssl.keyStore"
Value="${USER_INSTALL_ROOT} /etc/DummyClientKeyFile.jks"
重启PORTAL。
方式二:(如有其它证书需要使用时,可选此方案)
将证书添加到cacerts 库中。
再将证书添加到DummyServerTrustFile.jks文件中。(此文件为HTTP 传输链SSL默认的TRUST STORE)
重启PORTAL。
验证:
PORTAL启动日志中应该包含有Trust Association Init class com.octo.cas.client.websphere.CasTAI511 loaded successfully类似的信息并打印相关属性。
使用https://myCasServer/cas/login?service=http://portal:10038/wps/myportal 进行登录测试。如果可以登录CAS后直接进入PORTAL,说明SSO配置成功。
原文章地址:http://blog.csdn.net/shuneng/archive/2008/10/26/3151990.aspx