统一协同工作平台用户管理、单点登录以及任务集成接口说明

 

1 概述

西北油田分公司信息化经过长期建设,在各个业务点上,逐步搭建了适应业务管理的信息化系统,为分公司经营管理提供了强大的信息化辅助管理支撑。 但是,分公司前期建设的信息化系统都是基于传统办公自动化OA,目前逐步形成了多个单独业务系统组成的OA,如公文、合同、招投标、预结算等系统,这些系统之间没有统一的技术和数据标准,数据不能自动传递和共享,流程控制和标准多样化,从而形成了一个个彼此隔离的信息孤岛。

    在此背景上,西北油田分公司搭建了一套整合分公司各种信息资源库的协同工作平台,形成统一、综合、开放的办公应用平台。

本文档为西北油田分公司内部应用系统接入统一的协同工作平台提供指导,提供应用系统接入统一用户管理平台、实现单点登录和统一任务集成的接口说明。

2 单点登录实现

2.1 原理概述

单点登录系统提供统一的认证页面、统一的当前用户加密和解密服务。

用户通过统一认证页面登录系统,当用户需要访问企业内部应用系统时,单点登录加密当前用户身份跳转至指定的应用系统,指定应用系统获取到当前加密身份后,通过调用单点登录服务进行解密,获取到用户真实身份进行认证。

当统一认证页面采用Windows认证模式时,那么同样采用Windows认证模式的应用系统,必须部署在同一应用程序池下,对于其他非Windows认证的系统,将采取上述加密跳转的方式。

 

图:应用系统单点登录实现过程

2.2 统一认证页面

由单点登录系统提供,使用统一用户管理平台的账号和密码进行验证。用户访问企业内网门户或应用系统时,如果检测到未登录,则跳转至统一认证页面,用户登录后,再跳转至用户访问的页面。

统一认证页面地址:http://10.16.0.168/Portal/Login.aspx

统一认证页面输入输出参数如下

应用系统未认证时,跳转至统一认证页面,输入参数:

编码

输入方式

描述

SystemCode

Get/post

系统编码,由单点登录系统提供指定的编码,每个应用系统唯一,输入为空时,跳转至默认的门户页面

URL

Get/post

登录成功后,跳转到的应用系统URL,输入为空时,跳转至默认的门户页面

统一认证完成后,跳转至应用系统指定URL,输出参数:

编码

输入方式

描述

Token

Get

一次有效的验证Token,调用单点登录服务,可以得到当前用户的真实信息

2.3 单点认证服务

单点认证服务是提供给企业应用系统进行登录验证的服务,企业应用系统获取到Token后,以自己对应单点登录的SystemCode和Secret值,进行调用单点登录服务,解析得到统一平台的用户登录信息。

服务地址:http://10.16.0.168/SSO.asmx

单点认证服务提供2个WebService服务接口:

ü 获取统一认证平台用户账号接口

接口名称

GetAuthenticationUser

接口说明

获取已登录统一认证平台的用户账号

输入参数

参数编码

类型

说明

SystemCode

String

传入系统编码

Secret

String

传入系统秘钥

Token

Stirng

登录信息

输出参数

类型

说明

String

返回当前已登录统一认证系统的登录账号

ü 更改Secret接口

接口名称

UpdateSecret

接口说明

更改统一认证Secret信息

输入参数

参数编码

类型

说明

SystemCode

String

传入系统编码

Secret

String

传入旧的系统秘钥

NewSecret

Stirng

传入新的Secret信息

输出参数

类型

说明

bool

返回更改Secret值是否成功

 

3 应用系统单点登录接入

3.1 获取系统编码

系统编码是由单点登录服务提供的系统编码和解密秘钥。

编码

名称

说明

SystemCode

系统编码

文本类型,系统编码、企业内部唯一,不可变更

Secret

解密秘钥

文本类型,调用解密服务需要传入的参数,可以调用单点登录服务修改

以下是各应用系统编码,Secret可调用接口(参考3.4.4章节)自行修改:

系统名称

SystemCode

Secret

电子考勤系统

DZKQ

DZKQ

生产经营系统

SCJY

SCJY

招投标系统

ZTB

ZTB

无纸化会议

WZHHY

WZHHY

领导动态

LDDT

LDDT

3.2 统一登录页面

注:该功能为预留使用,本期项目可以不实现,应用系统只需要做好单点登录,仍然可保留已有的登录界面,让用户即可从统一平台登录界面进行登录系统,也可以从已有的系统登录界面进行登录系统。

统一单点登录页面URL:http://10.16.0.168/Portal/Login.aspx

当用户请求页面,并且未登录时,统一跳转至单点登录服务提供的登录页面地址,

http://10.16.0.168/Portal/Login.aspx?q={URL}&SystemCode={SystemCode}

参数说明

编码

名称

说明

URL

应用系统URL

单点登录成功后跳转到应用系统的URL地址

SystemCode

系统编码

单点登录系统编码

示例:当前应用系统编码是SCJY,用户请求的页面URL为:http://192.0.0.1/Default.aspx,

则跳转至:

http://10.16.0.168/Portal/Login.aspx?q= http://192.0.0.1/Default.aspx&SystemCode=SCJY

3.3 系统间单点登录跳转

系统之家的单点登录实现,都需要通过统一登录页面进行实现,例如A系统访问B系统的 Default.aspx页面,则需要使用:http://10.16.0.168/Portal/Login.aspx?q=http://B/Default.aspx。

3.4 应用系统单点登录实现过程

3.4.1 单点登录过程

本章节描述了应用系统对于单点登录需要做的事情和过程。

应用系统从URL中获取到Token值,通过SystemCode和Secret调用单点登录服务,解析得到用户的统一用户管理平台中的账号,在本系统实现登录验证。

单点登录需要支持的页面:所有在统一平台中需要加上链接的页面和表单界面。

以上页面中,在判断当前系统用户登录认证之前,按照以下步骤进行

  1. 如果URL中有Token值,则进入3,否则进入2
  2. 跳转至本系统的登录界面;
  3. 调用单点登录服务进行解密,得到用户的真实账号;
  4. 使用解密得到的账号自动进行本系统登录认证,完成单点登录;

3.4.2 单点登录界面说明

本期项目以下功能需要实现单点登录:

系统名称

集成功能

公文管理系统

公司发文、公司收文、公司工作联系单、公司会议记要审批件流转、部门发文、流程审核表单

合同管理系统

合同查询、合同台账、流程审核表单

招投标系统

招投标流程运行监控、项目运行监控、招标会议安排招标项目台账、评标专家维护、流程审核表单

生产经营管理系统

业务跟踪查询、流程审核表单

电子考勤系统

考勤管理、特殊考勤申请、考勤记录查询、流程审核表单

无纸化会议系统

会议室使用情况、无纸化会议申请、会议材料上传、流程审核表单

领导动态

行程动态登记、行程动态查询

内控管理系统

部门控制目标、内控手册查询、内控全文索引

电子邮件系统

未处理邮件数提醒

注:请各应用系统将以上功能的测试环境和正式环境的URL访问地址,提供给信息化管理中心董小诗。

3.4.3 获取Token

从统一认证平台跳转至应用系统时,统一认证平台会将当前的用户加密信息以Get方式进行发送至应用系统。

例如:应用系统URL地址http://192.0.0.1/Default.aspx,统一认证平台返回的URL地址为

http://192.0.0.1/Default.aspx?Token={Token}

参数说明

编码

名称

说明

Token

访问的Token

一次性使用,可以通过单点登录服务得到真实账号

注:每次登录Token值只一次有效。

3.4.4 获取应用系统用户账号

应用系统获取Token后,调用单点登录服务提供的解密服务,得到真实账号,单点登录服务以WebService方式提供。

接口名称

GetAuthenticationUser

接口说明

获取已登录统一认证平台的用户账号

输入参数

参数编码

类型

说明

SystemCode

String

传入系统编码

Secret

String

传入系统秘钥

Token

Stirng

登录信息

输出参数

类型

说明

String

返回当前应用系统的用户账号

 应用系统获取到返回当前应用系统的用户账号后,需要进行本系统的登录操作。

3.4.5 更改Secret信息

为了安全考虑,Secret值可以根据应用系统需要进行请求修改。修改过程调用统一单点登录服务进行完成。

单点登录系统提供接口如下:

接口名称

UpdateSecret

接口说明

更改统一认证Secret信息

输入参数

参数编码

类型

说明

SystemCode

String

传入系统编码

Secret

String

传入旧的系统秘钥

NewSecret

Stirng

传入新的Secret信息

输出参数

类型

说明

bool

返回更改Secret值是否成功

3.4.6 提供系统用户表

如果应用系统不是使用AD域账号,并且本系统用户没有与AD用户对应的用户关系映射表,那么需要做2个事情:

  1. 对于已有的系统用户,导出系统用户清单提供给统一平台,导出格式为:

所属组织

用户姓名

当前系统账号

 

 

 

  1. 对于新增用户(不在系统用户清单的用户),严格使用AD账号,否则不能正常单点登录。

3.5 统一用户管理集成

注:如果应用系统组织和用户不需要从AD做同步,仍然可以采取已有的方式进行维护,可以忽略此章节。

企业应用系统用户管理必须以统一用户管理平台提供数据为基础,系统定时或者管理员手动从统一用户管理平台进行同步。

使用统一用户管理后,应用系统不需要再从本系统进行维护组织和系统账号,所有系统账号创建、删除权在统一用户管理平台,应用系统需要实现从该平台进行组织同步。

统一用户管理平台提供组织、用户的数据接口,企业应用系统可以通过接口进行同步数据。

3.5.1 统一用户管理数据结构

ü 组织数据结构(OrganizationUnit)

字段名称

类型

说明

ObjectID

字符串

组织ID,唯一标示

Code

字符串

组织编码

Name

字符串

组织名称

ParentID

字符串

上级组织ID,如果为空,则表示是顶层组织

ManagerID

字符串

组织经理的用户ID,关联用户ObjectID

ModifiedTime

日期

组织最后修改日期

State

整数类型

启/禁用,0表示启用,1表示禁用

ü 用户数据结构

字段名称

类型

说明

ObjectID

字符串

用户ID,唯一标示

Code

字符串

编码、AD账号

Name

字符串

姓名

Appellation

字符串

称谓

EmployeeNumber

字符串

员工工号

ParentID

字符串

所属组织ID,关联组织ObjectID

ManagerID

字符串

上级经理ID,关联用户表ObjectID

Mobile

字符串

用户手机号码

Email

字符串

用户邮箱号码

OfficePhone

字符串

办公电话

State

整数类型

启/禁用,0表示启用,1表示禁用

ModifiedTime

日期

修改日期

3.5.2 统一用户管理平台接口

ü GetCompany()

方法说明:获取根目录的组织架构信息

输入参数

参数名称

类型

说明

 

 

返回值

类型

说明

OrganizationUnit

组织机构对象

ü GetAllOrganizationUnit()

方法说明:获取所有组织数据

输入参数

参数名称

类型

说明

 

 

返回值

类型

说明

OrganizationUnit[]

组织机构数组

ü GetAllUser()

方法说明:获取所有用户数据

输入参数

参数名称

类型

说明

 

 

返回值

类型

说明

User[]

用户数组

4 统一任务集成

4.1 集成说明

统一任务集成平台是西北油田分公司所有应用系统的待办任务综合处理平台,所有应用系统待办都接入统一任务集成平台处理。用户可以直接登录该平台,处理分散在所有系统中的任务。

所以我们需要所有应用系统将用户待办/待阅任务能即时推送至统一任务集成平台,并且和统一任务集成平台实现单点登录,方便用户进行操作。

基于移动扩展考虑,并且展示统一移动模式表单,应用系统还需要提供表单数据接口和表单操作接口,方便统一任务集成平台实现移动扩展。

统一任务集成过程如下图所示:

 

4.2 统一任务集成接口说明

接口服务地址:http://10.16.0.168/Portal/WorkItemService.asmx

ü 接口名称:AddUnFinishedWorkItem

方法说明:应用系统推送待办任务至统一任务集成平台

参数说明:

输入参数

参数名称

类型

说明

SystemCode

string

系统编码,由SSO服务提供

Secret

string

系统秘钥,由SSO服务提供

ID

string

应用系统工作任务唯一标示

WorkflowName

string

流程模板名称:如请假申请、发文审批

InstanceName

string

流程实例名称:例如张三的年假审批

ActivityName

string

环节名称:例如领导审批

Originator

string

发起人账号:流程发起人的中石化邮箱账号

Participant

string

当前任务处理人的中石化邮箱账号

ReceiveTime

Datetime

任务接收时间

PriorityType

PriorityType

枚举类型,待办的优先级

Low = 0,    // 低

Normal = 1,  // 中(默认值)

High = 2     // 高

ItemType

int

待办/待阅,0是待办/1是待阅

AllowReject

Bool

是否允许驳回

MobileProcessing

Bool

是否允许移动办公审批

业务系统自己判定,当存在复杂操作的表单逻辑和操作时,可以设置不支持在移动端操作,例如发起环节的填写。

Url

string

应用系统打开当前工作任务的URL

返回值

类型

说明

bool

任务推送是否成功

示例程序

// 调用一个任务推送,将任务ID=12345的任务推送至统一任务集成平台

            bool result = workItemService.AddUnFinishedWorkItem(

                 "系统编码",

                 "系统秘钥",

                 "12345",           // 应用系统的任务ID

                 "请假申请",

                 "张三的事假申请",

                 "主管审核",

                 "zhangs.xbsj",

                 "wangw.xbsj",

                 new DateTime(2015, 10, 31, 12, 21, 05),

                 PriorityType.Normal,

                 0,

                 "http://10.1.0.100/System/Apply.aspx?ID=12345"

            );

ü 接口名称:FinishWorkItem(string SystemCode,string Secret,string ID)

方法说明:应用系统任务完成时,通知统一任务平台

参数说明:

输入参数

参数名称

类型

说明

SystemCode

string

系统编码,由SSO服务提供

Secret

string

系统秘钥,由SSO服务提供

ID

string

待办任务在应用系统中的唯一标示

返回值

类型

说明

bool

统一任务处理平台调用是否成功

4.3 应用系统需要提供接口说明

PC端,统一任务集成平台通过单点登录直接打开应用系统表单URL,所有操作均由应用系统完成。

在移动端,统一任务集成平台通过获取应用系统表单数据,统一转换成移动办公模式表单进行展示,用户直接使用转换后的移动办公表单进行任务操作,所以应用系统需要向统一任务集成平台提供表单数据接口和表单操作接口。

4.3.1 移动端表单数据集成接口

应用系统需要构造接口返回数据结构,以WebService形式提供给统一任务集成平台进行调用。也就是说,以统一任务集成平台的提供数据结构,构造SheetData[]数组,返回给统一任务集成平台使用。

接口说明:统一使用名称 LoadSheetData

输入参数

字段名称

类型

说明

Token

string

统一平台会调用SSO加密服务将结果传递至应用系统,应用系统再调用解密服务验证Token值的真实有效性,然后进行处理。

ID

string

任务唯一标示

输出参数

类型

说明

SheetData[]

表单数据数组,参考统一任务集成平台提供的数据结构

SheetData结构说明

字段名称

类型

说明

DisplayName

string

表单数据项的显示标题

DisplayValue

string

表单数据项的显示值

Editable

bool

当前数据项是否允许编辑

RowIndex

int

数据项所在的行号索引,只对子表有效

ParentDisplayName

string

父数据项显示标题,只对子表数据项有效

例如:采购明细表中有一个字段是商品编码,那么返回商品编码字段时,ParentDisplayName的值就是采购明细表

SheetData定义示例:

public class SheetData

    {

        public SheetData() { }

        /// <summary>

        /// 获取或设置数据项的显示标题

        /// </summary>

        public string DisplayName { get; set; }

        /// <summary>

        /// 获取或设置数据项的显示值

        /// </summary>

        public string DisplayValue { get; set; }

        /// <summary>

        /// 获取或设置数据项是否可编辑,默认值请设置为False

        /// </summary>

        public bool Editable { get; set; }

        /// <summary>

        /// 获取或设置数据的行号

        /// </summary>

        public int RowIndex { get; set; }

        /// <summary>

        /// 获取或设置父级数据项的显示名称

        /// </summary>

        public string ParentDisplayName { get; set; }

    }

返回数据示例:

        [WebMethod]

        public List<SheetData> LoadSheetData(string Token, string ID)

        {

            // TODO:验证 Token 是否正确

            List<SheetData> sheets = new List<SheetData>();

            // 添加文本类型数据

            sheets.Add(new SheetData()

            {

                DisplayName = "合同编码",

                DisplayValue = "XB201500015",

                Editable= false

            });

            sheets.Add(new SheetData()

            {

                DisplayName = "合同名称",

                DisplayValue = "XXXXXX合同",

                Editable= false

            });

            // 添加数值类型数据

            sheets.Add(new SheetData()

            {

                DisplayName = "合同金额",

                DisplayValue = "200000",

                Editable= true

            });

            // 添加日期类型数据

            sheets.Add(new SheetData()

            {

                DisplayName = "签订日期",

                DisplayValue = "2015-5-10"

            });

            // 添加附件类型数据

            sheets.Add(new SheetData()

            {

                DisplayName = "合同附件",

                DisplayValue = "<a href='http://xxxx/xx.doc' target='_blank'>附件一</a>"

            });

            // 添加附件类型数据

            sheets.Add(new SheetData()

            {

                DisplayName = "采购明细表"

            });

            // 明细表第一行第一个字段

            sheets.Add(new SheetData()

            {

                ParentDisplayName = "采购明细表",  // 子表数据项的显示名称

                DisplayName = "商品名称",          // 子表的字段显示名称

                DisplayValue = "PC电脑",           // 子表的字段值

                RowIndex = 1                       // 子表的行索引

            });

            // 明细表第一行第二个字段

            sheets.Add(new SheetData()

            {

                ParentDisplayName = "采购明细表",

                DisplayName = "采购数量",

                DisplayValue = "12",

                RowIndex = 1

            });

            // 明细表第二行第一个字段

            sheets.Add(new SheetData()

            {

                ParentDisplayName = "采购明细表",

                DisplayName = "商品名称",

                DisplayValue = "iPad",

                RowIndex = 2

            });

            // 明细表第二行第二个字段

            sheets.Add(new SheetData()

            {

                ParentDisplayName = "采购明细表",

                DisplayName = "采购数量",

                DisplayValue = "20",

                RowIndex = 2

            });

 

            return sheets;

        }

4.3.2 移动端表单操作接口

应用系统必须提供2个接口方法给统一任务集成平台调用,方便统一平台在移动端审批时,能实现应用系统的提交、驳回操作,接口提供推荐使用WebServices模式。

接口一:提交任务接口,统一使用名称 SubmitItem

接口需要接收3个参数:

字段名称

类型

说明

Token

字符串

统一平台会调用SSO加密服务将结果传递至应用系统,应用系统再调用解密服务验证Token值的真实有效性,然后进行处理。

ID

字符串

任务唯一标示

CommentText

字符串

当前任务审核意见

SheetData

字符串

移动审批修改的数据项值,以JSON格式传递,当不修改时传递为空。

例如:

{数据项名称1:"数据项1的值",数据项名称2:"数据项2的值"}

接口二:驳回任务接口,统一使用名称 RejectItem

接口需要接收3个参数:

字段名称

类型

说明

Token

字符串

统一平台会调用SSO加密服务将结果传递至应用系统,应用系统再调用解密服务验证Token值的真实有效性,然后进行处理。

ID

字符串

任务唯一标示

CommentText

字符串

当前任务审核意见

SheetData

字符串

移动审批修改的数据项值,以JSON格式传递,当不修改时传递为空。

例如:

{数据项名称1:"数据项1的值",数据项名称2:"数据项2的值"}

 

转载于:https://www.cnblogs.com/h3bpm/p/7049591.html

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注