`
hanjiangit
  • 浏览: 185351 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Liferay的CAS SSO实现思路

阅读更多

原文地址:http://zuozheng456.blog.163.com/blog/static/236900562008112211538131/

SSO单点登录,基本上是做门户系统的必备工作之一。当我们用Liferay的时候,缺省已经集成了CAS、OpenID、LDAP、NTLM、OpenSSO等单点登录的解决方案。

但 这些集成方案都有一个小问题,就是不能把用户管理跟Liferay自身的用户管理集成起来。也就是说,我们必须要另外有一个用户管理的解决方案。尽管使用 LDAP可能是更流行的解决方案,但毕竟还是增大了我们的工作量,有没有就使用Liferay自身的用户管理的SSO集成方案?

本文就是试图来解决这个问题,主要基于以下几点来实现SSO。

  • 使用Liferay的用户注册、管理作为统一用户的基础。

  • 使用CAS作为单点登录的服务器端和客户端实现。

  • 对Liferay做必要的定制,满足SSO客户端产品的要求。

CAS的定制

下载的CAS Server,包括Liferay集成的CAS Server,都是只提供一个演示的登录验证,只要输入帐号和密码相同就可登录成功。

我们使用Liferay的身份认证,需要做的第一件事情就是定制这个登录实现。

实现帐号密码验证的代码

在CAS中,我们新写一个Java文件,com.liferay.sso.cas.adaptors.LiferayAuthenticationHandler,继承AbstractUsernamePasswordAuthenticationHandler。

在这个类中,使用JDBC连接Liferay的数据库,实现帐号和密码的验证。其中,帐号使用Liferay中的screenName。

由于在Liferay中,不同的Company可能会有相同的screenName,因此这种实现方法会有一些限制。最简单的做法,就是Liferay中只配置一个Company。

修改CAS配置文件

修改CAS的配置文件WEB-INF/deployerConfigContext.xml,修改<property name="authenticationHandlers">的内容。我的代码为:

<property name="authenticationHandlers">
<list>
<bean
class="org.jasig.cas.authentication.handler.support.
HttpBasedServiceCredentialsAuthenticationHandler"/> <bean class="com.liferay.sso.cas.adaptors.LiferayAuthenticationHandler"> <property name="dataSource" ref="liferayDbcpDataSource"/> </bean> </list> </property>

当然还需要一些配置数据库的代码,自行实现即可。

经过这两步,重新启动就可以用Liferay的帐号和密码进行认证了。

Liferay的定制

作为用户的集中管理,Liferay还应该提供给客户端应用,能够很方便的得到用户的详细信息,CAS本身是不解决这个问题的。

一个比较简单的做法,就是在Liferay中实现一个Servlet,根据用户screenName,得到用户的详细信息。数据格式,为了适应不同的客户端应用,可以采用XML进行编码。

Cas客户端的定制

CAS自己提供的Client,已经能满足用户认证的功能。我们需要进一步定制的,是解决Auto Login和新用户创建的问题。这两点,需要在每个集成CAS的客户端应用中实现。

Auto Login,可以借鉴Liferay自己的一些CasAutoLogin,根据已登录的Cas用户,初始化客户端应用所需要的一些Session信息。

CAS中还有一个重要的问题,就是当CAS的用户在客户端不存在的时候,怎么解决。还有一个更严重的问题,如果客户端已经有了用户,这时候怎么实现Liferay用户同本地用户的映射?

Liferay用户同本地用户的映射问题

用户映射,根据不同的系统,或者不同的用户需求应该有不同的实现方案。

使用相同的用户名

这是比较简单的做法,直接使用相同的用户名就行。当SSO的用户在本地应用中不存在的时候,可以有两种解决方法:

  • 允许用户映射本地已经存在的一个用户:让用户输入一个帐号密码,验证其本地合法用户的身份,然后自动将本地用户名修改为SSO相同的用户名。如果在本地还没有账户,可以直接使用第二种方案创建新用户。

  • 直接创建新的本地用户:调用Liferay的获取用户的接口,获取用户的详细信息,然后直接调用本地注册新用户的代码,创建一个本地新用户。

这两种情况下,下次用户登录时,直接根据相同用户名进行用户映射即可。

客户端应用自己保存用户映射

如果客户端应用不修改本地用户的用户名,可以添加代码,在本地实现一个用户的映射机制。比如将SSO的user1,映射为客户端的用户user2。

当然这种实现,也需要提供一个本地的用户验证机制,实现用户的正确映射。

在Liferay中添加用户映射的机制

考虑到有很多产品需要集成,如果每个产品都去实现用户映射,工作量比较大,可以考虑到Liferay中实现一个统一的映射机制。

这种实现,也需要提供一个本地的用户验证机制,实现用户的正确映射。

这时候,需要做的工作有几部分:

  • 新建一个数据表,用以保存SSO用户和各个产品的用户之间的映射机制。

  • 在Liferay中定制的获取用户信息的接口中,添加用户映射的信息。这样,SSO客户端读取用户信息时,能够直接读取到用户在本地的用户名。

  • Liferay中添加一个接口,由客户端调用,用于保存用户映射信息

分享到:
评论
1 楼 javaray 2010-08-08  
遨豪(大连)科技有限公司自2007年与Liferay,Inc合作,并帮助其建立Liferay中国分公司及支持中心,同时也是中国目前第一家唯一合作伙伴,主要负责Liferay产品的本地化服务,包括本地化培训,二次开发支持和Liferay企业版服务....

遨豪的Liferay 专业本地化培训和技术支持服务主要侧重于实际项目的培训,以及实际项目的案例分析讲解,使开发者能快速敏捷的基于liferay进行二次开发等,同时Liferay技术支持更加保障您项目的开发进程和质量控制,更多请参考:  www.aukcell.com

业务合作咨询

QQ:1417153858 (Liferay支持)
QQ:1410151582 (Liferay培训)
QQ:1492270185 (Liferay企业版)

电话:411-8489-8263
24/7:15601156692

相关推荐

    Liferay的CAS SSO实现

    Liferay是一款功能强大的开源企业级门户平台...总之,Liferay的CAS SSO实现是通过集成CAS服务器和配置Liferay的安全策略来完成的,这一功能对于多应用环境的企业级门户至关重要,它可以提供便捷、安全的用户登录体验。

    Liferay5.2.3和CAS配置成SSO

    完成上述步骤后,你将拥有一个使用Liferay 5.2.3和CAS 3.0.5实现的SSO系统,用户可以无缝地在不同应用之间切换,而只需登录一次。这个配置对于多应用的企业环境特别有用,可以提高用户体验,同时简化身份验证管理。

    liferay+cas

    将 Liferay 与 CAS 结合使用,可以实现 Liferay 门户的用户在多个关联应用之间共享认证信息,无需重复登录。 1. **Liferay 安装部署** - **下载所需文件**:Liferay IDE Eclipse 更新站点、Liferay 插件 SDK、...

    liferay+cas实现单点登录步骤

    【Liferay + CAS 实现单点登录步骤】 在IT领域,单点登录(Single Sign-On,简称SSO)是一种方便用户管理和身份验证的技术,它允许用户通过一次登录就能访问多个相互关联的应用系统,无需多次输入凭证。Liferay是一...

    liferay + cas + ldap 集成配置

    4. **集成 Liferay 和 CAS**:将 CAS 集成到 Liferay 中,可以实现全站范围的单点登录功能,用户只需要登录一次就能访问所有受保护的资源。这涉及到配置 Liferay 的 CAS 客户端插件,设置 CAS 服务器的相关参数,...

    liferay&cas开发说明

    Liferay是一款开源的企业级门户平台,而CAS则是一种开放源码的身份验证框架,常用于实现单点登录(Single Sign-On,SSO)功能。 【描述】中提到的"liferay的开发文挡"和"cas liferay整和的文挡"意味着我们需要关注...

    CAS4.2.4 连接Liferay6.2以上版本数据库用户表验证用户 project

    为了实现CAS与Liferay的集成,我们需要配置CAS服务器以连接到Liferay的数据库,并使用其中的用户信息进行身份验证。 首先,我们需要在CAS服务器的配置中添加Liferay数据库的相关信息。这通常涉及到修改`cas....

    cas统一身份认证sso

    统一身份认证-CAS配置实现 SSO单点登录Spring-Security+&+CAS+使用手册 统一身份认证-CAS配置实现 CAS登录验证(密码MD5、SHA加密后_再进行Base64加密实现代码)_与Liferay的用户身份验证对应

    CAS, Liferay和Alfresco portlet三者的整合

    2. **集成Liferay与CAS**:在Liferay中配置CAS客户端,使Liferay能够识别CAS服务器的认证响应,实现SSO登录。 3. **集成Alfresco与CAS**:同样地,Alfresco也需要配置成使用CAS进行认证,确保所有系统共享同一用户...

    LifeRay+CAS+LDAP+Tomcat 单点登录门户.pdf

    【LifeRay+CAS+LDAP+Tomcat 单点登录门户】是一种常见的企业级身份验证解决方案,它结合了多个组件来实现高效、安全的用户登录管理。在这个架构中,LifeRay 是一个开源的内容管理系统,用于构建企业门户;CAS...

    基于Liferay+Portal技术的校园信息门户研究与实现

    此外,Liferay还具备单点登录(Single Sign-On,SSO)能力,进一步增强了用户体验。 ##### 3.2 Struts、Hibernate与Spring技术 在实现校园信息门户的过程中,Struts、Hibernate和Spring这三种技术扮演了重要角色。...

    cas-server-3.3-release.zip

    总之,"cas-server-3.3-release.zip" 提供了实现Liferay SSO的关键组件,涉及到了身份验证、服务代理、安全配置等多个IT领域的知识。通过深入理解和配置这些组件,可以构建起一个高效、安全的SSO环境,提升企业信息...

    cas-server-3.4.3.1-release.zip

    2. **配置Liferay**: 在Liferay中配置CAS客户端插件,设置SSO属性,确保与CAS服务器通信。 3. **测试集成**: 验证用户能否通过CAS服务器进行身份验证,并无缝访问Liferay中的内容和应用。 4. **定制和扩展**: 如果...

    lifery6.1+cas初始化环境搭建及门户解决方案

    本方案的目标是将kjdp的工作流待办任务及业务对象查看功能集成到Liferay门户,并实现单点登录(SSO)功能。这不仅可以提高用户体验,还可以简化用户的登录流程,提高工作效率。 **1.2 安装** **1.2.1 版本说明** 本...

    liferay帮助文档

    - **cas**: 单点登录(Single Sign-On, SSO)的工程文件,用于实现用户在整个系统中的统一登录。 - **配置文件**: 如`liferay-portlet.xml`和`struts-config.xml`,这些文件用于定制Liferay的功能,如配置Portlet的...

    Liferay管理员手册

    - **中央验证服务(CAS)**: CAS认证配置。 - **身份验证:NTLM**: NTLM认证配置。 - **身份验证:OpenID**: OpenID认证配置。 - **身份验证:OPENSSO**: OPENSSO认证配置。 - **身份验证:SiteMinder**: ...

    liferay单点登录等

    ### 单点登录(SSO)在Liferay中的实现 单点登录是一种身份验证机制,允许用户在多个应用系统之间只需进行一次登录就能访问所有相关联的应用系统,而无需重复登录。在Liferay中,单点登录主要通过以下几种方案实现...

    CAS安装指南以及开发步骤 V1.0.docx

    此外,CAS还能与一系列知名的应用平台进行集成,如uPortal、BlueSocket、TikiWiki、Mule、Liferay、Moodle等。 CAS系统主要由两大部分组成: 1. **CASServer**:负责用户的身份验证工作,通常需要独立部署。 2. **...

Global site tag (gtag.js) - Google Analytics