- 浏览: 290677 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (155)
- Liferay portal研究 (23)
- spring研究 (7)
- Displaytag (2)
- Flash Builder (0)
- 搜索引擎 (12)
- 杂项 (17)
- SCM管理 (7)
- Jquery (5)
- Linux (7)
- Oracle (10)
- httpd集成 (3)
- Maven2 (5)
- 企业管理 (1)
- tomcat高级 (4)
- dos命令 (1)
- ldap (2)
- Java (8)
- webservice (1)
- jetty代码研究 (3)
- OpenCMS (1)
- JMX (2)
- hibernate (5)
- Ant (1)
- js tree (4)
- Quartz (0)
- CMS (1)
- springside (1)
- proxool (1)
- freemarker (1)
- Cookie (1)
- CAS SSO (4)
- mysql (1)
- php (1)
- js (2)
- Asset (1)
- openmeeting (1)
- h2数据库 (2)
- wcf vs java ws (1)
最新评论
-
22199143:
...
当在重启Tomcat容器时 Exception in Thread "HouseKeeper" java.lang.NullPointerException -
liuqq:
一直用Oracle开发,几乎没有接触过其他数据库。使用Mysq ...
The Nested Set Model -
yjsxxgm:
yjsxxgm 写道FFFFFFFFFFFFFFFWWW
java 访问wcf -
yjsxxgm:
FFFFFFFFFFFFFFF
java 访问wcf -
hjp222:
scanIntervalSeconds 是重新启动,并非真正的 ...
Jetty 热部署
SSO单点登录,基本上是做门户系统的必备工作之一。当我们用Liferay的时候,缺省已经集成了CAS、OpenID、LDAP、NTLM、OpenSSO等单点登录的解决方案。 但这些集成方案都有一个小问题,就是不能把用户管理跟Liferay自身的用户管理集成起来。也就是说,我们必须要另外有一个用户管理的解决方案。尽管使用LDAP可能是更流行的解决方案,但毕竟还是增大了我们的工作量,有没有就使用Liferay自身的用户管理的SSO集成方案? 本文就是试图来解决这个问题,主要基于以下几点来实现SSO。 使用Liferay的用户注册、管理作为统一用户的基础。 使用CAS作为单点登录的服务器端和客户端实现。 对Liferay做必要的定制,满足SSO客户端产品的要求。 下载的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的配置文件WEB-INF/deployerConfigContext.xml,修改<property name="authenticationHandlers">的内容。我的代码为: 当然还需要一些配置数据库的代码,自行实现即可。 经过这两步,重新启动就可以用Liferay的帐号和密码进行认证了。 作为用户的集中管理,Liferay还应该提供给客户端应用,能够很方便的得到用户的详细信息,CAS本身是不解决这个问题的。 一个比较简单的做法,就是在Liferay中实现一个Servlet,根据用户screenName,得到用户的详细信息。数据格式,为了适应不同的客户端应用,可以采用XML进行编码。 CAS自己提供的Client,已经能满足用户认证的功能。我们需要进一步定制的,是解决Auto Login和新用户创建的问题。这两点,需要在每个集成CAS的客户端应用中实现。 Auto Login,可以借鉴Liferay自己的一些CasAutoLogin,根据已登录的Cas用户,初始化客户端应用所需要的一些Session信息。 CAS中还有一个重要的问题,就是当CAS的用户在客户端不存在的时候,怎么解决。还有一个更严重的问题,如果客户端已经有了用户,这时候怎么实现Liferay用户同本地用户的映射? 用户映射,根据不同的系统,或者不同的用户需求应该有不同的实现方案。 这是比较简单的做法,直接使用相同的用户名就行。当SSO的用户在本地应用中不存在的时候,可以有两种解决方法: 允许用户映射本地已经存在的一个用户:让用户输入一个帐号密码,验证其本地合法用户的身份,然后自动将本地用户名修改为SSO相同的用户名。如果在本地还没有账户,可以直接使用第二种方案创建新用户。 直接创建新的本地用户:调用Liferay的获取用户的接口,获取用户的详细信息,然后直接调用本地注册新用户的代码,创建一个本地新用户。 这两种情况下,下次用户登录时,直接根据相同用户名进行用户映射即可。 如果客户端应用不修改本地用户的用户名,可以添加代码,在本地实现一个用户的映射机制。比如将SSO的user1,映射为客户端的用户user2。 当然这种实现,也需要提供一个本地的用户验证机制,实现用户的正确映射。 考虑到有很多产品需要集成,如果每个产品都去实现用户映射,工作量比较大,可以考虑到Liferay中实现一个统一的映射机制。 这种实现,也需要提供一个本地的用户验证机制,实现用户的正确映射。 这时候,需要做的工作有几部分: 新建一个数据表,用以保存SSO用户和各个产品的用户之间的映射机制。 在Liferay中定制的获取用户信息的接口中,添加用户映射的信息。这样,SSO客户端读取用户信息时,能够直接读取到用户在本地的用户名。 Liferay中添加一个接口,由客户端调用,用于保存用户映射信息。基于Liferay的CAS SSO实现思路
CAS的定制
实现帐号密码验证的代码
修改CAS配置文件
Liferay的定制
Cas客户端的定制
Liferay用户同本地用户的映射问题
使用相同的用户名
客户端应用自己保存用户映射
在Liferay中添加用户映射的机制
发表评论
-
ogl的入门
2010-03-30 08:24 1362http://jxb8901.iteye.com/blog/2 ... -
jaas 入门
2010-03-04 17:10 1866本例是认证的实现,JAAS定义了可插拔的认证机制,使认证逻辑独 ... -
JAAS HelloWorld
2010-03-04 17:09 1225Examples: JAAS HelloWorld Thes ... -
liferay 权限
2010-01-04 13:49 1554liferay的权限很多资料说 ... -
liferay多数据源
2009-12-15 15:46 1758Configure MySQL Master/Slave ... -
杂项2
2009-11-18 21:44 899function <portlet:namespace ... -
Simple Apache CXF web service integration
2009-11-18 20:24 1179For those who wants to use the ... -
LiferayCounter机制
2009-10-24 14:08 1027public long increment(String na ... -
lifery 老的资源
2009-10-23 14:40 821http://docs.liferay.com/portal/ ... -
liferay portal 的开发目录结构
2009-10-17 11:59 1704portal-kenel.jar 不依赖任何非标准jar(只依 ... -
liferay 常用urls
2009-10-16 22:43 915http://blog.csdn.net/smilingleo ... -
liferay 调用webservice
2009-10-16 22:34 4518Liferay是基于SOA理念设计的,很容易通过Web Ser ... -
Database Sharding
2009-10-15 12:40 1554Database sharding is a way of s ... -
Liferay权限管理的讲解
2009-10-12 21:37 1519这篇文章讲解了liferay中使用的权限管理系统的内部细节,涉 ... -
ServiceContext Pattern
2009-10-12 21:30 1002The Service Context is an objec ... -
Liferay性能调优
2009-10-12 21:25 2175CONTRIBUTIONS WANTED Corné|Corn ... -
Liferay重要对象-Layout
2009-10-12 21:19 2192A layout is an instance of a si ... -
liferay常用配置
2009-10-12 20:47 1137在实际需求中,如果是做网站那我们有时候会有这样的需求,即希望用 ... -
liferay学习系列(3)
2009-10-11 20:16 1227在一个Portlet中链接到另一个Portlet 这个问题,应 ... -
liferay学习系列(2)
2009-10-07 20:31 6926想做个用户积分管理,类似于论坛积分的概念,首先在用户管理里面添 ...
相关推荐
SSO单点登录,基本上是做门户系统的必备工作之一。当我们用Liferay的时候,缺省已经集成了CAS、OpenID、LDAP、NTLM、OpenSSO等单点登录的解决方案
Liferay5.2.3和CAS配置成SSO
本文对基于 LDAP 轻量目录服务、SSO 单点登录和 Liferay 框架的门户模型的架构和在信息及应用集成领域发挥的作用进行了研究和阐述,以高效的应用和信息集成和消除信息孤岛为目标,通过对该领域当前发展情况和存在问题...
该插件使用OpenID Connect协议使Liferay使用外部身份验证源,例如社交网络和SSO系统。 它。 介绍 OpenID Connect协议将身份验证委托给所谓的提供程序,并为请求的应用程序(在我们的示例中为Liferay)提供访问令牌...
liferay-google-apps-for-work-sso 允许用户使用 Google Apps for Work 登录的 Liferay 插件
统一身份认证-CAS配置实现 SSO单点登录Spring-Security+&+CAS+使用手册 统一身份认证-CAS配置实现 CAS登录验证(密码MD5、SHA加密后_再进行Base64加密实现代码)_与Liferay的用户身份验证对应
适用于Liferay v6.2 +的Twitter单一登录(SSO)实施。 自动登录流程已被修改,以支持Twitter不再提供电子邮件地址的事实。 由于电子邮件是用于在Liferay中进行注册的必填字段,因此在成功通过相关Twitter帐户进行...
Liferay中使用CAS实现单点登陆(SSO),WAR包
sso cas CAS provides enterprise single sign-on service: * An open and well-documented protocol * An open-source Java server component * A library of clients for Java, .Net, PHP, Perl, Apache, ...
用于 Java 的 NTLMv2 SSO 过滤器和 API,基于来自“Liferay Portal”产品 (http://www.liferay.com) 的 JCIFS 扩展。
单点登录是企业业务整合比较流行解决方案,像多个系统使用同一个用户数据库的,并且这些系统需要相互信任时,此时使用单点登陆(SSO)是比较合适的。 #cas简介 CAS 是Yale(耶鲁)大学的一个开源的企业级单点登录系统...