跨系统单点登录

问题:如何在JBOSS中实现跨系统单点登录。

原理:中央认证服务(CAS),当用户从A系统访问B系统中受保护的资源时,首先从中央认证服务中拿到一个ticket(凭证),然后将ticket传到B系统中,B系统拿这个ticket到中央认证服务中验证ticket的合法性。

JBOSS对于JAVAEE安全认证规范的实现的详细介绍,参见:
http://docs.jboss.org/jbossas/jboss4guide/r5/html/ch8.chapter.html
具体流程描述:当我们从A系统调用B系统中受保护的资源时,首先从ticket服务中那到一个ticket,然后将ticket和用户id一起通过调用资源的url传递到B系统,由于用户在B系统中尚未登录,系统会自动把用户forward到在web.xml中定义的login页面,然后我们同在login页面接收到ticket和用户id,然后使用它们做一次自动提交到j_security_check尝试登录,如果登录认证成功,系统就会自动把用户forward到之前尝试调用的url。自此,快系统调用成功。
具体实现:
1.使用mule来管理ticket服务,使用apache http-client来作为客户端,使用JSON来作为数据交换格式。
2.ticket服务设计思路:ticket必须是唯一的,不能重复,必须有过期策略,必须和用户关联,A用户请求的ticket,只能由A用户消费。为了解决唯一性,使用了当前时间+UUID的方式来做为ticket,过期策略使用mule-quartz来删除过期的ticket,将ticket和用户id关联来解决用户和ticket关联的问题。
3.使用mule的Transformer来处理从客户端传递过来的JSON数据。
4.在做跨系统调用时,首先使用TicketProducer从ticket服务中拿到ticket。
5.在JBOSS中,默认的认证与授权功能是被委派个JAASSecurityManager来完成的,这种认证与授权采用了JAAS(JAVA认证与授权服务)来作为具体的实现技术(具体请参见WINDWOS和WEB系统单点登录的原理部分),所以创建一个TgsLoginModule,在其中验证用户的逻辑使用TicketConsumer来使用Ticket服务来进行具体的用户验证工作,实现用户认证功能。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值