1.3.2 用户注销过程
用户需要登出系统时,在信息综合管理平台选择的注销功能,开始注销过程:
1. 首先在信息综合管理平台从用户session中得到用户曾经访问的业务应用代码即appCode。
2. 根据业务应用代码对用户已经认证的应用,循环调用各个业务应用的登出服务。
3. 业务应用在收到服务调用后注销该会话。
4. 循环调用各个业务应用的登出服务完成后,信息综合管理平台注销用户session
最终是用户在信息综合管理平台上的会话失效,从而使得用户在信息综合管理平台上的会话及所有参与SSO的应用上的会话均已失效,单点登出即全部完成。
业务应用
登出服务
Client
业务应用
登出服务
2 注销请求
用户客户端
1 登出
3 应用注销
4 平台注销
信息综合
管理系统
2 注销请求
3 应用注销
图3:单点登出原理图
1.3.3 权限服务
在很多单点登录的解决方案中,并不提供权限验证的功能。一般权限验证都还是放在各个业务应用进行,最多只是在统一登录平台验证一下用户有没有权限进入业务应用。
我们用SOA服务来解决权限验证问题,就显得很容易。
各个业务应用在启动的时候通过调用权限信息服务从信息综合管理平台获取应用的权限角色的信息,把信息放在应用的缓存。用户单点登录成功后,用户认证服务会把用户的角色信息返回给业务应用,放在业务应用用户的session中。当用户访问业务应用资源时,通过用户session的角色信息在缓存中找到角色对应的资源权限信息,从而判断用户是否有访问业务应用资源的权限。
当信息综合管理平台的权限信息有变化,则信息综合管理平台会调用业务应用的一个更新服务来刷新业务应用的权限信息的缓存。这样就保证应用缓存的实时性。
权限服务的示意图如下:
图4:权限服务的示意图
1.4 服务的架构
本解决方案中主要有用户认证服务,登出服务,权限数据服务。服务之间的调用关系如下图, EOS平台提供ESB的机制,应用把SOA服务在ESB的注册中心注册,各个应用就可以通过查找获取所需的服务。
图5:服务总线结构图
1.5 SOA服务的实现
介绍了实现原理,我们来看一下实现的方法。在本解决方案中,我们采用普元公司的EOS平台来开发SOA服务,EOS平台提供自顶向下和自底向上两种方式来开发SOA服务。
自顶向下的开发方式就是先从业务角度出发,规划好服务,然后在实现服务的过程中构造出一个个构件,包括逻辑构件、运算构件、数据库构件等。自底向上的方式则相反,先有数据库构件,逻辑功能构件,在通过一定的组织把他们包装成服务。
在本方案中,我们用EOS自顶向下的方法来构造SOA服务。前面我们已经划分出了三个服务:认证服务;登出服务;权限验证服务。下面我们以认证服务为例子来说明服务的构建过程。