论文部分内容阅读
摘 要 本文作者设计的统一的安全登录方案,具有一定的科学性及可操作性,刊发出来和同仁交流与切磋。
【关键词】统一;安全登录;方案
目前,稍微有点规模的企业都会在不同时期构建不同的业务系统,来替代人力的手工劳动,提高工作效率和质量,随着企业的不断发展,积累的业务系统也越来越多,这些不同的系统往往是在不同的时期建设起来的,运行在不同的平台上,也许是由不同厂商开发,使用了各种不同的技术和标准......为了降低管理的消耗,最大限度的重用已有投资的系统,很多企业都在进行着企业应用集成(EAI)。企业应用集成可以在不同层面上进行:例如在数据存储层面上的“数据大集中”,在传输层面上的“通用数据交换平台”,在应用层面上的“业务流程整合”,和用户界面上的“通用企业门户”等等。事实上,还用一个层面上的集成变得越来越重要,那就是“身份认证”的整合,也就是“单点登录”。
单点登录的机制其实是比较简单的,用一个现实中的例子做说明:一般一个旅游景点内部有许多独立的景点,每个景点都可以在各个景点门口单独买票。如果游客需要游玩所有德景点,需要在每个景点门口排队买票,很不方便。于是绝大多数游客选择在大门口买一张通票,就可以玩遍所有景点而不需要重新再买票。单点登录的机制也一样,当用户第一次访问应用系统A时,如果还没有登录,就会被引导到认证系统中进行登录,用户在认证系统中进行身份效验,如果通过效验,就会返回给用户一个认证凭据,用户再访问应用系统B时,就会将这个凭证带上,应用系统B接受到请求之后会把这个凭证送到认证系统进行效验,检查该凭证的合法性。如果通过效验,用户就可以安全访问应用系统B和应用系统C了,如图1。
从图1可以看出,要实现单点登录,有一个统一的认证系统,主要包括如下几方面:
(1)对用户信息统一存储管理:主要基于数据库进行存储和管理;
(2)对用户的登录信息进行验证;
(3)生成安全认证凭证,并返还给用户;
(4)管理安全认证凭证,并能验证认证凭证;
(5)所有对应的应用系统能够识别和提取认证凭证。
我们一般会把用户基本信息及权限信息保存到数据库中,并通过认证系统,向外提供认证服务和获取认证信息服务,提供服务的方式可以基于http、RMI、DUBBO等远程调用方式,DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点,有很好的横向扩展能力,我们可以选用DUBBO服务框架提供远程认证服务和获取认证信息服务。
用户完成登录后,为了更好的提供获取认证信息的性能,我们选用redis作为数据缓存服务器,认证数据主要包括:用户基本信息、用户权限信息等,每个用户登录后,都会生产唯一的安全凭证(ticket),以ticket为主键,用户相关信息以json格式的字符串存放在Redis中,这样,认证服务器就可以通过ticket高效的获取登录用户相关信息。
为了保证用户在线的唯一性,即:同一时刻,同一个用户只能有效在线一个,如果a用户在一台电脑上登录,a用户同时又在另外一台电脑上登录时,会自动把前面的用户挤出(前面登录的a用户自动注销处理),在redis中可以再已用户名为主键,存放用户登录的ticket信息,用户完成登录后,首先用用户名验证是否在redis中已登记,如果已登记,则把对应的ticket置为失效状态,从而达到自动挤出前一登录用户的目的。
为了更好的记录用户登录登出的日志,但是基于web的系统,http是短链接方式,如果用户非法关闭浏览器,或非法关机等原因,导致用户非法登出,从而不能有效的获取用户登出时间,为了相对有效的获取登出时间,可以通过监控ticket是否有效,如果ticket已无效,则认为用户已登出,这个时候可以相对有效的认为当前系统时间即为用户注销时间。
作为统一登录接入系统,如果系统是基于web应用,怎么获取当前的有效的ticket,我们都知道,web应用是基于http的,而http是基于短链接的,客户端与服务端进行一次交互后就断开了连接,那怎样保存并获取当前有效的ticket呢?我们可以基于cookie保存ticket信息,客户端获取ticket时序图2。
图2)
(1)浏览器用户访问应用系统A的授权功能,首先进入安全拦截器;
(2)安全拦截器把请求提交给认证服务器,认证服务器验证当前ticket是否有效,如果有效直接访问,如果无效,则告知应用系统需要同步安全的ticket;
(3)浏览器客户端获取到同步ticket请求后,首先向认证服务器获取当前的有效ticket;
(4)浏览器客户端获取到当前有效的ticket后,把ticket提交给应用系统A;
(5)应用系统A把当前的ticket保存到当前cookie,同时通知浏览器客户端继续进行授权功能访问;
(6)浏览器客户端继续提交访问应用系统A的授權功能,进入步骤1处理。
综上,即完成了一个完整的分布式应用系统的统一登录的安全方案。
作者单位
湖南商学院电信1604班 湖南省长沙市 410215
【关键词】统一;安全登录;方案
目前,稍微有点规模的企业都会在不同时期构建不同的业务系统,来替代人力的手工劳动,提高工作效率和质量,随着企业的不断发展,积累的业务系统也越来越多,这些不同的系统往往是在不同的时期建设起来的,运行在不同的平台上,也许是由不同厂商开发,使用了各种不同的技术和标准......为了降低管理的消耗,最大限度的重用已有投资的系统,很多企业都在进行着企业应用集成(EAI)。企业应用集成可以在不同层面上进行:例如在数据存储层面上的“数据大集中”,在传输层面上的“通用数据交换平台”,在应用层面上的“业务流程整合”,和用户界面上的“通用企业门户”等等。事实上,还用一个层面上的集成变得越来越重要,那就是“身份认证”的整合,也就是“单点登录”。
单点登录的机制其实是比较简单的,用一个现实中的例子做说明:一般一个旅游景点内部有许多独立的景点,每个景点都可以在各个景点门口单独买票。如果游客需要游玩所有德景点,需要在每个景点门口排队买票,很不方便。于是绝大多数游客选择在大门口买一张通票,就可以玩遍所有景点而不需要重新再买票。单点登录的机制也一样,当用户第一次访问应用系统A时,如果还没有登录,就会被引导到认证系统中进行登录,用户在认证系统中进行身份效验,如果通过效验,就会返回给用户一个认证凭据,用户再访问应用系统B时,就会将这个凭证带上,应用系统B接受到请求之后会把这个凭证送到认证系统进行效验,检查该凭证的合法性。如果通过效验,用户就可以安全访问应用系统B和应用系统C了,如图1。
从图1可以看出,要实现单点登录,有一个统一的认证系统,主要包括如下几方面:
(1)对用户信息统一存储管理:主要基于数据库进行存储和管理;
(2)对用户的登录信息进行验证;
(3)生成安全认证凭证,并返还给用户;
(4)管理安全认证凭证,并能验证认证凭证;
(5)所有对应的应用系统能够识别和提取认证凭证。
我们一般会把用户基本信息及权限信息保存到数据库中,并通过认证系统,向外提供认证服务和获取认证信息服务,提供服务的方式可以基于http、RMI、DUBBO等远程调用方式,DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点,有很好的横向扩展能力,我们可以选用DUBBO服务框架提供远程认证服务和获取认证信息服务。
用户完成登录后,为了更好的提供获取认证信息的性能,我们选用redis作为数据缓存服务器,认证数据主要包括:用户基本信息、用户权限信息等,每个用户登录后,都会生产唯一的安全凭证(ticket),以ticket为主键,用户相关信息以json格式的字符串存放在Redis中,这样,认证服务器就可以通过ticket高效的获取登录用户相关信息。
为了保证用户在线的唯一性,即:同一时刻,同一个用户只能有效在线一个,如果a用户在一台电脑上登录,a用户同时又在另外一台电脑上登录时,会自动把前面的用户挤出(前面登录的a用户自动注销处理),在redis中可以再已用户名为主键,存放用户登录的ticket信息,用户完成登录后,首先用用户名验证是否在redis中已登记,如果已登记,则把对应的ticket置为失效状态,从而达到自动挤出前一登录用户的目的。
为了更好的记录用户登录登出的日志,但是基于web的系统,http是短链接方式,如果用户非法关闭浏览器,或非法关机等原因,导致用户非法登出,从而不能有效的获取用户登出时间,为了相对有效的获取登出时间,可以通过监控ticket是否有效,如果ticket已无效,则认为用户已登出,这个时候可以相对有效的认为当前系统时间即为用户注销时间。
作为统一登录接入系统,如果系统是基于web应用,怎么获取当前的有效的ticket,我们都知道,web应用是基于http的,而http是基于短链接的,客户端与服务端进行一次交互后就断开了连接,那怎样保存并获取当前有效的ticket呢?我们可以基于cookie保存ticket信息,客户端获取ticket时序图2。
图2)
(1)浏览器用户访问应用系统A的授权功能,首先进入安全拦截器;
(2)安全拦截器把请求提交给认证服务器,认证服务器验证当前ticket是否有效,如果有效直接访问,如果无效,则告知应用系统需要同步安全的ticket;
(3)浏览器客户端获取到同步ticket请求后,首先向认证服务器获取当前的有效ticket;
(4)浏览器客户端获取到当前有效的ticket后,把ticket提交给应用系统A;
(5)应用系统A把当前的ticket保存到当前cookie,同时通知浏览器客户端继续进行授权功能访问;
(6)浏览器客户端继续提交访问应用系统A的授權功能,进入步骤1处理。
综上,即完成了一个完整的分布式应用系统的统一登录的安全方案。
作者单位
湖南商学院电信1604班 湖南省长沙市 410215