单点登录(一)cas概念+原理

来源:互联网 发布:淘宝主图视频在线制作 编辑:程序博客网 时间:2024/06/06 15:38

一、关键字:

        sso域名:https://www.talkingdata.net:8446/

        登录地址:https://www.talkingdata.net:8446/login

        登录地址(远程登录):https://www.talkingdata.net:8446/remoteLogin

        退出地址:https://www.talkingdata.net:8446/logout

        语言参数:locale=zh_CN,locale=en

二、什么是sso

        a) 所谓SSOSingle Sign On)单点登录是指基于用户/会话认证的一个过程,用户只需一次性提供凭证(仅一次登录),就可以访问多个应用。而不需要访问每个应用时,都重新输入密码。

        b) SSO的实现机制不尽相同,大体分为Cookie机制和Session机制两大类。

        WebLogic通过Session共享认证信息。Session是一种服务器端机制,当客户端访问服务器时,服务器为客户端创建一个惟一的SessionID,以使在整个交互过程中始终保持状态,而交互的信息则可由应用自行指定,因此用Session方式实现SSO,不能在多个浏览器之间实现单点登录,但却可以跨域。

        WebSphere通过Cookie记录认证信息。Cookie是一种客户端机制,它存储的内容主要包括: 名字、值、过期时间、路径和域,路径与域合在一起就构成了Cookie的作用范围,因此用Cookie方式可实现SSO,但域名必须相同。

        目前大部分SSO产品采用的是Cookie机制,目前能够找到的最好的开源单点登录产品CAS也是采用Cookie机制。也是我们这次SSO开发的参照产品。CAS 可以很简单的实现跨域的 SSO ,因为,单点被控制在 CAS Server ,用户最有价值的 TGC-Cookie 只是跟 CAS Server 相关, CAS Server 就只有一个,因此,解决了 cookies 不能跨域的问题。

三、环境

        jetty+ssl

四、cas原理

        CAS从结构上来说包括俩部分,分别是CAS ServerCAS Client

        CAS Server需要独立部署,主要负责认证工作,CAS Client负责处理对客户端访问受限资源的访问请求,当针对该资源的访问需要登录时重定向到CAS ServerCAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。


图 1 使用Cookie实现单点登录的原理图


图2 cas浏览器请求序列图

    ·首先,单点登录分为“服务端”和“客户端”。服务端就是单点登录服务器,而客户端需要使用单点登录的应用程序,需要把客户端插件安装到自己的系统中,单点登录的客户端通常替换了原来应用程序的认证部分的代码。

    ·某个应用程序首先要发起第1次认证。大部分情况下,应用程序中嵌入的客户端会把应用程序原来的登录画面屏蔽掉,而直接转到单点登录服务器的登录页面。

    ·用户在单点登录服务器的登录页面中,输入用户名和密码。

    ·然后单点登录服务器会对用户名和密码进行认证。认证本身并不是单点登录服务器的功能.

    ·认证通过之后,单点登录服务器会和应用程序进行一个比较复杂的交互,这通常是某种授权机制。CAS使用的是所谓的Ticket.

    ·授权完成后,CAS把页面重定向,回到Web应用。Web应用此时就完成了成功的登录(当然这也是单点登录的客户端,根据返回的Ticket信息进行判断成功的)。

   ·然后单点登录服务器会在客户端创建一个Cookie。注意,是在用户的客户端,而不是服务端创建一个Cookie。这个Cookie是一个加密的Cookie,其中保存了用户登录的信息。

    ·如果用户此时希望进入其他Web应用程序,则安装在这些应用程序中的单点登录客户端,首先仍然会重定向到CAS服务器。不过此时CAS服务器不再要求用户输入用户名和密码,而是首先自动寻找Cookie,根据Cookie中保存的信息,进行登录。登录之后,CAS重定向回到用户的应用程序。

这样,就不再需要用户继续输入用户名和密码,从而实现了单点登录。

注意,这种单点登录体系中,并没有通过http进行密码的传递(但是有用户名的传递),因此是十分安全的。

 

这里要说明一点,单一用户,统一用户和单点登录是不同的三个概念

统一用户就是指不同的系统,使用同一套用户处理的机制。

    ·用户ID全局惟一,用户登录名,密码全局唯一,并且统一存储在单一系统中。

    · 用户的一些属性,如姓名、电话、地址、邮件等,统一存储在单一系统中。尽管各应用系统还可以自行增加一些属性,但是基本的属性应该统一存储和管理。

     ·应用系统不应该直接对用户信息的进行增加、修改和删除,但是可以进行查询。对用户信息的增加、修改和删除,应该由专门的系统进行统一的管理。

很显然,统一用户是单点登录的基础,但是统一用户并不意味着实现了单点登录

 

单一用户管理则指所有的用户管理工作都在唯一的地方进行处理,而每个应用程序不再保留自己的用户管理功能。单一用户管理和统一用户管理的最大区别在于,统一用户管理之后,每个应用程序仍然保留自己的用户管理功能,用于额外的属性设置;而单一用户管理时,每个应用程序不再保留自己的用户管理功能。


参考:

http://www.cnblogs.com/hellowood/archive/2010/08/05/1793364.html

http://www.cnblogs.com/shanyou/archive/2009/08/30/1556659.html

原创粉丝点击