1.5.1 构件装配
我们先在EOS构建装配图中画出我们需要的服务构件,单点登录主要有两个构件装配:服务器端的认证服务(也称认证服务端)和客户端的认证服务(认证客户端)。
认证服务端是部署在信息综合管理平台。认证客户端是部署在信息综合管理平台和业务应用。认证客户端需要通过webservice方式来调用认证服务端提供的远程服务。认证服务器端的用户认证服务通过绑定webservice方式提供远程调用服务。认证客户端是提供给业务应用本地调用的服务。
认证客户端和服务端的构件采用EOS的逻辑构件来实现。
构件装配图如下:
图6:构件装配图
1.5.1.1 认证服务器端构件信息
认证服务器端构件定义了一个远程认证的接口,输入参数是需要验证的用户信息,如用户名,密码,应用代码,已登录用户的唯一识别号。对他们的约束如下:
l 用户名和应用代码为必须有参数。
l 密码和已登录用户的唯一识别号为可选参数,两者必须要有一个。密码是用户第一次验证需要提供的,已登录用户的唯一识别号是已经验证过的用户需要提供的,一般是为了应用session超时后调用认证服务时需要提供的。
l 系统会根据参数不同进行不同校验:如果有已登录用户的唯一识别号,先进行已登录用户的唯一识别号校验,不通过时如果有密码,会进行用户名密码校验;没有已登录用户的唯一识别号时,进行用户名密码校验。
认证接口的返回参数是一个数组,包含认证是否成功,如果成功,则还包含用户的相关信息,如用户基本信息,用户组,用户岗位,用户角色,用户所属组织信息。
认证接口的参数都是符合SDO2.1标准的SDO对象,所以只要符合标准的调用,都能正常工作。
图7:认证服务器端构件信息
1.5.1.2 认证服务端绑定成服务
要让认证服务端能供客户端通过websevice进行调用,还需要把它绑定到webservice服务。如下图:
图8:认证服务绑定图
1.5.1.3 认证客户端的构件信息
认证客户端是提供给业务应用本地调用的服务。认证客户器端构件定义了认证服务的接口,它的接口输入输出和认证服务端的构件是一样的。
认证客户端通过webservice绑定的方式调用了认证服务器端的引用。 如图7构件装配图所示。
业务应用通过调用认证客户端来进行用户认证。
图9:认证客户端的构件信息
1.5.2 服务实现
1.5.2.1 认证服务端的服务实现
定义好服务的接口后,需要来进行服务的实现,EOS的逻辑构件服务是用构件的逻辑流来实现。
我们需要定义一个userAuth的构件实现userLoginRemote的逻辑流。逻辑流实现如下图:
图10:认证服务实现逻辑流图
在这个逻辑流,我们主要调用了一个运算逻辑:验证TicketID(登录用户唯一标识),两个子业务逻辑流:本地认证和查询用户信息。
本地认证的业务逻辑流图如下:
图11:本地认证的业务逻辑流图
查询用户信息的业务逻辑流图如下:
图12:查询用户信息的业务逻辑流图