1、单点登录简介
单点登录(Single SignOn),简称为SSO,是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要进行一次登录就可以访问所有建立了相互信任关系的应用系统。它的目标是方便用户,简化管理,提供统一的一站式服务。
使用单点登录主要有以下几个方面的好处:
1.1 统一管理、维护用户公共信息、提供多种接口标准,保证其他应用系统通过直接访问或同步复制的方式,从统一用户中心获取一致的用户信息。
1.2 方便管理,减少管理员管理多个应用系统用户的压力,管理员只需要维护好统一用户中心的用户信息即可,其他应用系统可按一定的规则从统一用户中心同步用户信息。
1.3 为终端用户提供便捷的一站式服务,用户只需要记住一个用户名及密码即可访问其有权限的所有应用系统,也可以减少因用户忘记密码而为管理员增加的工作量。
1.4 具有良好的兼容性、可扩展性,一方面能兼容新开发的业务系统也能支撑现有的应用系统的访问;另一方面,系统中用户信息的属性可以扩充,以适应未来业务的变化。
1.5 提高开发人员的效率。SSO 为开发人员提供了一个通用的身份验证框架。实际上,如果SSO 机制是独立的,那么开发人员就完全不需要为身份验证操心。他们可以假设,只要对应用程序的请求附带一个用户名,身份验证就已经完成了。
2、单点登录系统设计
本文作者负责一所高校信息门户开发及维护,由于目前所用的门户系统没有单点登录服务,但又经常需要跟其他应用系统之间进行单点登录,因此设计此方案,大致的思路如下:
2.1 设计思路。我校的信息门户使用活动目录进行用户管理,通过LDAP 协议进行统一身份验证,因此本方案也使用AD作为统一用户中心,在门户上建立单点登录服务用于跟其他应用系统之间的单点登录。
用户首先登录门户,SSO 服务获取到用户信息后将用户有权访问的资源列表展现给用户,用户点击到某个应用的链接后自动登录到相应的应用程序;用户点击的链接不包含任何敏感信息,只有应用服务器ID;SSO 服务会根据应用服务器ID 自动根据凭证生效时间、过期时间、用户ID、Key(SSO服务器与应用服务器之间约定的加密字符串)等信息自动生成凭证并将凭证提供给应用服务器验证,当应用服务器收到登录请求后会首先验证用户的合法性,然后到SSO服务器验证凭证的合法性,验证成功后允许用户登录,且该过程必须要在既定的时间内完成。
该过程中每个应用与SSO 服务器之间约定共同的Key(密匙),根据密匙、用户ID、用户IP、凭证生成时间及失效时间根据一定的规则使用Hash 算法生成凭证,因此相同用户在不同时间登录某个应用时生成的凭证是不相同的。
服务器之间通过SSL 协议加密信息传输,用户通过使用https 的方式访问。
SSO服务器根据单点登录类型判断应用系统中的用户信息与统一用户中心的用户信息是一致的还是需要进行用户映射,如果需要进行用户映射且用户是第一次登录,则将用户重定向到用户映射页面要求用户填写相关信息后进行登录。
SSO 服务器应具有的功能:
(1)可以添加多个应用,添加应用时可添加应用服务器名称、通信密匙、应用服务器单点登录地址等信息。
(2)可将所有应用以合适的方式展现给用户,并能获取用户登录ID,并根据应用服务器ID、通信密匙按照一定的加密算法生成凭证信息及凭证信息的Hash 值。
(3)提供用于验证应用服务期凭证的WebService,该Web-Service 应检查凭证的时效性(是否为过期凭证)及正确性,防止凭证被篡改,同时将校验的结果反馈给应用服务器。应用服务器功能:
(4)应用服务期只需要校验SSO 服务器提供的用户ID 及凭证的有效性即可。
2.2 单点登录流程。
2.2.1 用户首先登录门户,并打开单点登录(SSO)应用列表,点击相应的应用系统链接。
2.2.2 SSO服务器根据APPID找到对应的应用、与应用服务器约定的key,在SSO 服务器上生成一条包含APPID、用户ID、用户IP、凭证生效时间、凭证失效时间、凭证信息的Hash 值等的记录。凭证信息根据APPID、用户ID、用户IP、凭证生效时间、凭证失效时间及与应用服务期之间约定的key 按照一定的规则生成。
2.2.3 SSO 服务器根据步骤2 中的信息采用Hash 加密算法生成的凭证信息,并将用户ID 及凭证传递到应用服务器。
2.2.4 应用服务器根据SSO 服务器传递过来的用户ID,校验该用户的有效性,同时调用SSO 服务器提供的WebService 校验凭证的有效性及时效性,如果校验成功,则允许用户登录。
2.2.5 如果用户登录的应用系统与统一用户中心使用不同的用户信息,则用户第一次登录时需要首先进行用户映射,第二次登录时执行步骤1 到步骤4。
2.2.6 用户登录其他应用系统时重新执行以上过程。
从以上流程可以看出,本文设计的单点登录方案跟其他单点登录方案有所不同,用户无论登录那个应用系统均需由SSO服务器代替用户自动登录。
2.3 具体数据表设计。
首先我们需要一张表用于存放各种应用服务器的相关信息,包含应用服务器名称、应用服务器单点登录地址等信息,数据表字段及设计说明如下:
除了上面数据表之外我们还需要一张表用于存放用户登录时自动生成的信息,同时这张表中的数据也作为应用服务器向SSO服务器验证时用。
如果统一用户中心与应用系统使用两套不同的用户信息,则还需要设计统一用户中心与应用系统中用户信息对应表。
3、方案评估
3.1 通用性。
该设计方案可以使用各种编程语言实现,因此具有跨平台、跨应用的特点。用户在登录其他应用系统时由于不需要输入任何密码,因此用户可自由修改其在其他应用系统中的密码,只要用户名或登录ID 不变,用户即可通过单点登录服务登录到相应的应用,应用系统原有登录方式不受影响。
由于各应用系统之间保持独立,因此一台应用服务器受攻击后其他服务器不受影响。通常情况下各业务系统都会有自己的业务操作账户,而这些账户是不需要进行单点登录的,且各应用服务器可以有自己独有的用户信息。比如,财务系统及人力资源系统可以单独为领导设置帐号专门用于报表的查看。
3.2 安全性。
本方案从以下几个方面加强系统的安全:
3.2.1 SSO 服务器与应用服务器之间约定的密匙不同。
3.2.2 生成的凭证具有时效性和随机性,会自动过期,过期后不能再次使用。
3.2.3 凭证的加密采用Hash 算法加密保证凭证传递过程中不被截取或篡改,并防止两个应用系统相互截取或伪造对方的凭证。
3.2.4 SSO 服务器与应用服务器使用SSL 传输协议,可确保数据在网络传输过程中不会被截取及窃听。
3.2.5 每个系统都有自己的应用系统ID 及密匙。
3.2.6 进行单点登录的用户都需要首先通过LADP 协议到AD服务器进行验证,这就保证了单点登录服务地址只有门户系统中的用户可以访问而其他非门户用户必须首先通过门户的验证后才能访问相应资源。
3.2.7 整个单点登录过程不进行用户密码的传递。
3.3 方案优点。
3.3.1 由于每个应用跟SSO服务器约定的密匙不相同,各应用服务器相互隔离,可有效避免相互之间的恶意篡改凭证。
3.3.2 用户每一次登录都使用随机凭证,并有一定的时效性,可以加强系统的安全性。
3.3.3 该方案在技术上实现的难度不大又具有较强的安全性,因此比较适合自主开发,从而降低成本。
3.3.4 由于单点登录服务具有统一的接口及接口规则,降低了应用系统接入时开发的难度
3.4 方案缺点。
3.4.1 该方案适合应用及用户较小的组织,若应用数量多、用户基数大则建议将门户与SSO服务器分开,从而降低服务器压力。
3.4.2 由于用户登录门户后即可访问所有经过授权的应用系统,一旦用户门户密码泄露,则所用应用系统均受影响,因此要加强门户安全,避免门户密码泄露。
4、结论
单点登录的方式有很多种,最终的目标就是简化管理、方便用户,尽可能加强系统的安全性,但每种方案都有自身的特点,本文实现的单点登录方案仍有可完善的地方,如果运用于生产环境,还需要进一步加强系统安全性设计及灵活性设计。比如:可考虑通过服务器之间端口过滤或防火墙技术限制只有这些应用服务器能与SSO 服务器之间进行用户认证;只允许互相信任的应用服务器访问SSO 服务器的WebService等。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:基于门户单点登录系统的设计与实现
本文网址:http://www.toberp.com/html/consultation/1083938097.html