EIP SSO服務說明
以下部分說明合作夥伴如何串接 EIP 提供的 SSO 服務,取得目前使用者資料登入至應用程式。
一. 透過 EIP SSO 服務轉頁並拋轉 EIP 登入者資訊至目標系統
下圖 1 是使用者透過 EIP SSO 服務登入合作夥伴應用程式的完整流程。後面的編號清單則依序列出圖片中每個步驟的詳細說明。
注意:進行這項程序前,合作夥伴必須向 EIP 提供下圖步驟 3、5 的服務網址,並於 Server 安裝新光醫院根憑證以回應 EIP 的 SSO 服務。
圖 1:
觸發 EIP SSO 服務連結(若觸發當下使用者未登入 EIP,則跳轉至EIP登入頁面,於使用者登入成功後才觸發後續動作)。
使用 EIP SSO 服務連結(新光醫內部測試環境)範例如下: http://10.1.225.101/SKH_SSO.ASPX?uri=http%3A%2F%2F10.1.225.101%2FBPM%2FFM7_SetAuthorityTEST.aspx&redirect=http%3A%2F%2F10.1.225.101%2FBPM%2FSKH_SSO.aspx uri 參數值為驗證憑證並記錄 token 頁面(參圖1 步驟3)、redirect參數值為要跳轉的目標頁面 (參圖1 步驟5)
EIP 產生 token,透過 POST 的方式包含 EIP 憑證將其發送至合作夥伴的驗證服務網址。
合作夥伴如驗證憑證無誤,需自行紀錄 token 並設定一過期時間(ex:2分鐘)。
取得步驟 2 EIP 發送之 token 範例如下:
string token; using (Stream receiveStream = Request.InputStream) { using (StreamReader readStream = new StreamReader(receiveStream, Request.ContentEncoding)) { token= readStream.ReadToEnd(); } } Response.Write(token); //5fc84f46-5743-4ed3-a94d-1ba63b8022a5
重新導向網址至合作夥伴 SSO 目標頁面,並提交 token 與使用者資訊(JSON String)。
驗證步驟 3 紀錄的 token 是否生效,生效則取用使用者資訊登入系統。
取得步驟 3 EIP 發送之 token 、使用者資訊範例如下:
string token = Request["token"].ToString(); string AccountInfo = Request["AccountInfo"].ToString(); Response.Write(token); //5fc84f46-5743-4ed3-a94d-1ba63b8022a5 Response.Write(AccountInfo); /* { "AccountID":"00123", "AccountName":"Jack", "Dept":[ { "DeptID":"001", "DeptName":"藥劑部", "IsMainJob":1 } ] } */
使用者已重新導向至夥伴系統實際連結網址。
二. 透過 token 取得 EIP 登入者資訊
- 於 EIP SSO 成功轉向至夥伴系統後,夥伴系統可取得 EIP SSO 服務所傳遞的 token,以該 token 呼叫服務即可取得登入者資訊。
透過 token 取得 EIP 登入者資訊(新光醫內部測試環境)範例如下: http://10.1.225.101/SKH_SSO_AUTH.ASPX?token=93feb23e-1e33-4e97-93ce-b75c3e4597b2 token參數值為EIP SSO服務成功導向後傳遞的 token 回應格式為 json,範例資料如下:
/* { "AccountID":"00123", "AccountName":"Jack", "Dept":[ { "DeptID":"001", "DeptName":"藥劑部", "IsMainJob":1 } ] } */
- 若呼叫服務取得資料為空,表示該帳號未登入 EIP,請執行章節一描述之 EIP SSO 服務重新取得 token。