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方式提供。
接口名稱
GetAuthentica www.juhongyulept.com tionUser
接口說明
獲取已登錄統一認證平台的用戶賬號
輸入參數
參數編碼
類型
說明
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. 對於已有的系統用戶,導出系統用戶清單提供給統一平台,導出格式為:
所屬組織
用戶姓名
當前系統賬號
2. 對於新增用戶(不在系統用戶清單的用戶),嚴格使用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://www.luleu99.com10.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/ www.jimeiyulept.com 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的值"}
