第三方系統打開EAFC的實現

前言:EAFC是咱們公司的一個框架,一個項目上,客戶的OA系統要調用咱們推送過去的代辦任務,但願能打開咱們的代辦處理界面,咱們的代辦處理界面是winform的。引出給出瞭如下的一個方案。在此備存。web

--------------------------------------------------------安全

第三方系統打開EAFC的實現服務器

藉助ClickOnce來實現第三方系統打開本地eafc客戶端,而不管第三方系統是網頁版仍是桌面版(好比在oa中點擊待辦事項,打開審批界面)。app

一. 參數框架

打開eafc,要支持客戶端參數。能夠經過ClickOnce傳遞參數給客戶端,以便客戶端根據傳入的參數作相應的動做。ide

1,外部系統 sysid。須要給每一個要打開eafc的外部系統分配惟一的編號,用於識別可信任系統。使用該系統id,能夠實現憑證的解密,用戶的映射等等。ui

2,認證信息 credential。經過認證信息,客戶端來肯定請求用戶的合法性。credential 的實現有多種,能夠是 帳號+密碼+隨機碼(加密後),也能夠是系統根據某種方式生成的token。加密

3,認證方式 auth_modeurl

能夠是 1:帳號密碼明文方式;2,帳號密碼密文方式;3:內部通行證方式。默認 1。orm

4,應用 app

要打開的應用的編號。無默認值

5,要打開的功能編號 func

登陸後,自動打開的功能,只能一個。

6,功能參數 func_param

7,其餘參數:

(1)tm 樹形菜單 0:隱藏,1打開,默認打開

(2)dm下拉菜單 0:隱藏,1打開,默認打開

(3)title:窗口標題,默認系統原標題

(4)sm:自啓動模塊,0:禁止,1:啓用,默認啓用

(5)size:窗口大小,w,h或者 max最大化,默認最大化。

 

二,接口功能與用戶認證

1. 取任務列表

條碼系統經過提供webservice,供外部系統(好比茂名OA系統)調用以得到某個用戶的待辦任務列表。

參數:系統id,用戶憑據credential,時間範圍。。。

根據系統id,來判斷採用哪一種用戶驗證方式(系統能夠配置對每一個外部系統的驗證方法,驗證鏈),驗證經過後,轉換爲本地系統用戶。

其中,用戶憑據能夠是帳號密碼,能夠是明文或者加密,好比使用des或者rsa加密,推薦使用rsa非對稱加密。若是使用des的話,最好不一樣外部系統使用不一樣的加密密鑰。根據 「帳號 +  密碼 + 隨機碼」造成字符串,進行加密造成。加隨機碼的目的是:使即使是同一我的,每次造成的credential也不一樣,避免重放攻擊。在登陸時,將credential發送給服務端,解析出帳號和密碼進行驗證。

 

2. 打開待辦任務

經過客戶端打開待辦任務時,必須以某個帳號登陸到系統。由於登陸信息經過ClickOnce參數傳遞,要考慮安全性,好比密碼不要使用明文,還要避免重放攻擊。

在造成代辦事項列表時,將credential造成在待辦任務的處理url中。代辦列表的格式:

http:/[ip]/eafc.appliction?credential=<驗證串>&auth_mode=2&func=<功能號>&......

credential 的造成有兩種(參見1、參數 1.認證方式),以下:

(1)第1種方式,用戶帳號+密碼方式

credential。加密方式和驗證方式參見第一部分的說明。

(2)第2種方式

其中credential由系統隨機生成,並存放在表中,表的格式:

憑據表名:ams_sys_credential

(1)credential     char(100)   -- 能夠是guid,只要是隨機的不重複,且很難猜出來就行。

(2)user_id         number     -- 對應的本系統用戶

(3)create_time   datetime   -- 建立時間

(4)exp_time      datetime    -- 過時時間 過時後,該憑據無效。系統會自動刪除過時的憑證。

打開待辦任務時,eafc從參數中取得credential串,發送給服務器進行驗證,驗證程序在憑據表ams_sys_credential中查找該credential,若是存在且沒有過時,驗證經過,返回該credential對應的本地用戶。不然驗證失敗。

 

3、外部系統的管理

外部系統打開eafc時,須要傳遞外部系統id。外部系統id由eafc統一分配和管理。對不一樣的外部系統,eafc可使用不一樣的用戶憑證驗證方式;憑據加解密,用戶映射。

1,憑證驗證方式。不一樣的外部系統可能支持不一樣的用戶驗證方式,好比茂名oa多是ad域用戶驗證,其餘系統也多是本系統本身驗證(提供驗證服務)。或者是多種驗證方式的組合(驗證鏈)。eafc能夠根據不一樣的系統,配置不一樣的驗證方式。

2,憑據加解密。根據不一樣的外部系統,配置不一樣的加解密方式,以及存放加解密密鑰。

3,用戶映射。有時候外部系統傳入的用戶帳號是外部系統本地用戶而不是eafc的用戶信息。在經過外部系統帳號登陸時,驗證經過後,須要轉換成eafc本地系統用戶。

除了外部系統須要登陸eafc外,相對應的,eafc也可能須要登陸外部系統,好比茂名的投資計劃管理系統。也須要以上的3點信息。

外部系統管理的相關表:

1,外部系統註冊表 ams_sys_trust_system

(1)系統id varchar(20)

(2)系統描述

(3)系統登陸頁面

2,外部系統詳細信息表 ams_sys_trust_system_dtl

(4)對外部系統的加密方法 --提供給外部系的加解密方法 des或者rsa

(5)外部系統提供的加密方法 --知足外部系統要求的加解密方法,des或者rsa

(6)對外部系統的加密參數

(7)外部系統提供的加密參數

(8)對外部系統提供的加解密provider ;用來解密外部系統傳過來的加密的憑據

(9)外部系統的加解密provider;用來將明文加密靠後傳送給外部系統

(10)驗證鏈 --外部系統登陸本系統時的驗證鏈

2,用戶映射關係 ams_sys_user_mapping

(1)系統id

(2)內部用戶id

(4)外部系統用戶帳號

(5)外部系統用戶密碼

(6)其餘輔助列。

相關文章
相關標籤/搜索