【SSO单点登录】3.实现方式介绍(一)

本文章由聚项云平台博客独家原创,转载请注明出处:http://blog.jxcode.com/?p=2854&preview=true

上一篇我们讲解了单点登录的一些特性和分类。本篇我们来探讨一下单点登录的一些实现方式。

一、单点登录的实现方式
(1)基于cookie实现
这是一种最简单的单点登录的实现方式。实现方式之前已经描述过:
在cookie机制中,用户第一次登录系统A,此时系统A会判断客户端的cookie中有没有指定的内容,如果没有,就将用户引领到认证系统中进行登录。然后用户在认证系统中登录后,认证系统会将用户的登录凭据保存在cookie中,返回给客户端。然后再次登录系统A时,系统A判断客户端的cookie中包含登录凭据,则允许进入系统A,否则拒绝。同理登录其它子系统也是一样。

需要注意如下几点:如果是基于两个域名之间的传递sessionid的方法可能在windows中成立,在unix&linux中可能会出现问题,此时可以基于数据库实现。

在安全性方面可能会做出更多的考虑,因为cookie是存储在客户端的,可以被客户篡改,绕过认证机制。所以cookie认证在企业中几乎不去使用。

另外,关于跨域问题,虽然cookies本身不跨域,但可以利用它实现跨域的SSO。

(2)Broker-bases(基于经理人)
基于经理人的SSO系统采用一个集中的认证和用户账号管理服务器,认证服务器扮演者经纪人的角色。用户访问应用服务器之前,先向经纪人主动进行身份验证,然后携带票据许可到授权服务器获取服务票据,用户携带服务票据去请求应用服务器,最终应用服务器验证服务票据后再提供响应服务。

关于经理人的概念,可以用“坐火车”的实例来描述:
图3.1
在该途中,用户首先到售票大厅购买火车票,然后到检票口进行检票,检票员或闸机确认票据正常后,用户就可以登上火车。整个过程就类似与基于经理人的认证机制,即首先用户主动向经理人(认证服务器)进行身份验证,此时认证服务器会带着票据向授权服务器进行凭据认证,如果曾经在授权中心获得过凭据,则通过经理人认证,成功则进入应用系统,否则失败。

(3)Agent-based(基于代理)
基于代理的SSO系统中存在一个身份认证的代理程序,用户登录服务器时,代理程序将记录其密码并自行发送给其它集成的系统,代替用户进行登录。

我们用下图来描述基于“代理”的认证模式:
图3.2
当用户首次登录系统A时,需要输入账号和密码,然后代理服务器将用户的账号密码记录下来,并且主动将账号密码推送给其它系统(如系统B),当系统B接收到推送时,获取用户的登录凭证进行自动登录。当用户去登录系统B时,系统B其实已经进行了自动登录,系统中存在用户的会话凭证,此时会绕过登录页面,直接进入系统内部。

其实基于“代理”机制的认证模式在我们日常的生活中已经在使用,例如有一些第三方浏览器会提示用户是否保存账号名和密码,如果我们选择保存,则下次登录的时候,浏览器会带出上次输入的账号名和密码进行登录。

还有非常火的“第三方登录”,即使用QQ、微信等第三方的账号登录作为凭证,当用户使用第三方账号登录成功时,第三方就扮演着代理服务器的角色,将用户的凭证发送给接入第三方的业务系统,此时业务系统拿到凭证后就进行自动登录,实现了一种统一认证。

未经允许不得转载:JX BLOG » 【SSO单点登录】3.实现方式介绍(一)

赞 (2)

评论 0

评论前必须登录!

登陆 注册