昨天碰到了一篇讲单点登录(SSO)的文章,作者可能是从字面意思理解的单点登录(只允许一个地方登录,一方登陆了,另一方就要下线,这种应该是单设备登录)。正好最近我也在处理多系统访问的问题,也要用到单点登录,就打算整理点东西。
创新互联公司专注于赫章网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供赫章营销型网站建设,赫章网站制作、赫章网页设计、赫章网站官网定制、成都小程序开发服务,打造赫章网络公司原创品牌,更为您提供赫章网站排名全网营销落地服务。
单点登录: 英文Single Sign On,根据英文含义不难理解,即:单一标记(单点)登录。就是说,我只需要登录一次。例如:QQ,我在QQ空间登录一次,我可以去访问QQ产品的其他服务:QQ邮箱、腾讯新闻等,都能保证你的账户保持登录状态。
单设备登录: 就是只能在一个设备上登录,若同时在其他设备登录,先前登录的用户会被提醒:该账户在其他设备登录。例如qq,小米手机登录中,同时拿华为手机登录该账户,小米手机的账户会被挤下线。
SSO(Single Sign-On)是一种统一认证和授权机制,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。
解决了用户只需要登录一次就可以访问所有相互信任的应用系统,而不用重复登录。
如下图所示:
当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候,就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行效验,检查ticket的合法性(4,6)。如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。
从上图可以看出sso的实现技术点:
1)所有应用系统共享 一个身份认证系统 。
统一的认证系统是SSO的前提之一。
认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket),返还给用户。
另外,认证系统还应该对ticket进行效验,判断其有效性。
2)所有应用系统能够识别和提取ticket信息
要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。
应用系统应该能对ticket进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。
关于 统一身份认证机制 :如下图
①用户请求访问业务系统。
②业务系统在系统中查看是否有对应请求的有效令牌,若有,则读取对应的身份信息,允许其访问;若没有或令牌无效,则把用户重定向到统一身份认证平台,并携带业务系统地址,进入第③步。
③在统一身份认证平台提供的页面中,用户输入身份凭证信息,平台验证此身份凭证信息,若有效,则生成一个有效的令牌给用户,进入第④步;若无效,则继续进行认证,直到认证成功或退出为止。
④用户携带第③步获取的令牌,再次访问业务系统。
⑤业务系统获取用户携带的令牌,提交到认证平台进行有效性检查和身份信息获取。
⑥若令牌通过有效性检查,则认证平台会把令牌对应的用户身份信息返回给业务系统,业务系统把身份信息和有效令牌写入会话状态中,允许用户以此身份信息进行业务系统的各种操作;若令牌未通过有效性检查,则会再次重定向到认证平台,返回第③步。
1)提高用户的效率。
用户不再被多次登录困扰,也不需要记住多个 ID 和密码。另外,用户忘记密码并求助于支持人员的情况也会减少。
2)提高开发人员的效率。
SSO 为开发人员提供了一个通用的身份验证框架。
实际上,如果 SSO 机制是独立的,那么开发人员就完全不需要为身份验证操心。
他们可以假设,只要对应用程序的请求附带一个用户名,身份验证就已经完成了。
3)简化管理。
如果应用程序加入了单点登录协议,管理用户帐号的负担就会减轻。
简化的程度取决于应用程序,因为 SSO 只处理身份验证。
所以,应用程序可能仍然需要设置用户的属性(比如访问特权)。
1)不利于重构
因为涉及到的系统很多,要重构必须要兼容所有的系统,可能很耗时
2) 无人看守桌面
因为只需要登录一次,所有的授权的应用系统都可以访问,可能导致一些很重要的信息泄露。
Kerberos是一种网络认证协议(Network Authentication Protocol) ,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。
在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。
认证过程具体如下:客户机向认证服务器(AS)发送请求,要求得到某服务器的证书,然后 AS 的响应包含这些用客户端密钥加密的证书。
证书的构成为:
1、服务器 "ticket" ;
2、一个临时加密密钥(又称为会话密钥 "session key") 。
客户机将 ticket (包括用服务器密钥加密的客户机身份和一份会话密钥的拷贝)传送到服务器上。会话密钥可以(现已经由客户机和服务器共享)用来认证客户机或认证服务器,也可用来为通信双方以后的通讯提供加密服务,或通过交换独立子会话密钥为通信双方提供进一步的通信加密服务。
PKI是一种技术,个人信息保护认证是一个应用。PKI是一种新的安全技术,它由公开密钥密码技术、数字证书、证书发放机构(CA)和关于公开密钥的安全策略等基本成分共同组成的。PKI是利用公钥技术实现电子商务安全的一种体系,是一种基础设施,网络通讯、网上交易是利用它来保证安全的。从某种意义上讲,PKI包含了安全认证系统,即安全认证系统-CA/RA系统是PKI不可缺的组成部分。 PKI(Public Key Infrastructure)公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书。一个机构通过采用PKI框架管理密钥和证书可以建立一个安全的网络环境。PKI主要包括四个部分:X.509格式的证书(X.509 V3)和证书废止列表CRL(X.509 V2);CA/RA操作协议;CA管理协议;CA政策制定。一个典型、完整、有效的PKI应用系统至少应具有以下部分; . 认证中心CA CA是PKI的核心,CA负责管理PKI结构下的所有用户(包括各种应用程序)的证书,把用户的公钥和用户的其他信息捆绑在一起,在网上验证用户的身份,CA还要负责用户证书的黑名单登记和黑名单发布,后面有CA的详细描述。 . X.500目录服务器 X.500目录服务器用于发布用户的证书和黑名单信息,用户可通过标准的LDAP协议查询自己或其他人的证书和下载黑名单信息。 . 具有高强度密码算法(SSL)的安全WWW服务器 出口到中国的WWW服务器,如微软的IIS、Netscape的WWW服务器等,受出口限制,其RSA算法的模长最高为512位,对称算法为40位,不能满足对安全性要求很高的场合,为解决这一问题,采用了山东大学网络信息安全研究所开发的具有自主版权的SSL安全模块,在SSL安全模块中使用了自主开发的SJY系列密码设备,并且把SSL模块集成在Apache WWW服务器中,Apache WWW服务器在WWW服务器市场中占有百分之50以上的份额,其可移植性和稳定性很高。 . Web(安全通信平台) Web有Web Client端和Web Server端两部分,分别安装在客户端和服务器端,通过具有高强度密码算法的SSL协议保证客户端和服务器端数据的机密性、完整性、身份验证。 . 自开发安全应用系统 自开发安全应用系统是指各行业自开发的各种具体应用系统,例如银行、证券的应用系统等。 完整的PKI包括认证政策的制定(包括遵循的技术标准、各CA之间的上下级或同级关系、安全策略、安全程度、服务对象、管理原则和框架等)、认证规则、运作制度的制定、所涉及的各方法律关系内容以及技术的实现。
线路及通信控制局(ChannelandTrafficControlAgency);信道至信道转接器(Channel-to-ChannelAdapter)。
DesignandimplementationofthesmartcardmanagerbasedonCTCA基于CTCA的智能卡协调管理器的设计与实现。
DesignandimplementationofthesmartcardmanagerbasedonCTCA。
基于CTCA的智能卡协调管理器的设计与实现。一站式出国留学攻略