單一簽入技術介接應用分享資訊組

壹、前言

所謂「單一簽入」就是Single Sign-On (SSO),意思是各個不同的網路應用系統可以藉由單一的入口來統一管理,使用者只需要登入一次,即可在加入SSO的網路應用系統中操作。使用者無需重覆登入,可減少申請或記憶許多組的帳號與密碼。

單一簽入的架構會因應不同的需求而區分成數種形式,以加入系統的成員來看,有單純針對公司組織內部系統的單一簽入,也有提供各個不同組織加入的第三方單一簽入系統。目前國內有一些政府機關為了擴大資訊服務,所提供的單一簽入服務即為第三方單一簽入的架構。本文將以臺北市政府教育局單一簽入服務(網址:https://sso.tp.edu.tw)為例,來介紹此類架構,讓大家對於單一簽入的技術與應用能有一個初步的了解。

貳、技術應用分享

臺北市教育局為了方便使用者使用線上教育平臺上的相關資源,建置一套單一簽入系統,讓使用者以單一簽入帳號登入系統,經過授權的網路使用者,便可透過單一驗證的方式,方便快速地存取所有已授權的網路資源。外部組織所建置的網路應用系統,如果要介接單一簽入服務,為了確保系統介接的安全性,有一些申請程序與介接技術規範必須遵循,以下將簡述各階段執行的步驟:

一、申請SSO KEY

外部組織如果要介接臺北市教育局的單一簽入服務,必須先向臺北市數位學習教育中心申請「SSO KEY」。申請SSO KEY需要提供以下資訊:

    1. 系統名稱:主要用於顯示在授權頁面上,讓使用者在登入時可以知道目前是由那一個網路應用系統進行SSO身分認證。
    2. 系統網域名稱:基於網路安全性考量,向臺北市數位學習教育中心申請SSO KEY時,會同時綁定網路應用系統的網域名稱,用於檢查回傳資料的網域名稱是否合法。
    3. 應用程式網址:執行SSO程式的網址,並必須簡要說明程式的主要用途與所提供的功能。
    4. 系統緊急聯絡人資料,包括:e-mail、電話、姓名與單位名稱。

申請成功後,臺北市數位學習教育中心會核發帳號(App Key)與密碼(App Secret),外部組織便可透過所取得之帳號與密碼進行網路應用系統的SSO驗證。

二、進行系統介接

系統介接的程式可分為3大部分:取得授權碼、取得權杖,與取得使用者資訊,以下將簡述其執行過程:

(一)取得授權碼:臺北市數位學習教育中心會提供「請求授權碼網址」給申請系統介接的外部組織。介接的應用系統必須透過「請求授權碼網址」進行相關參數的傳送,完成驗證後便可取得授權碼。其中包含帳號、回應形態與導回網址等3個參數,以下簡要說明各參數的功能。
      1. 帳號:申請取得的App Key。
      2. 回應形態:SSO要回應的資料類型。
      3. 導回網址:當使用者單一登入成功後要重新導向的網址。
(二)取得權杖:臺北市數位學習教育中心會提供「請求權杖網址」,介接的應用系統必須透過「請求權杖網址」傳送相關參數,完成驗證後便可取得權杖。參數包含:帳號、密碼、模式、授權碼與導回網址,以下簡要說明各參數的功能。
      1. 帳號:核發的App Key。
      2. 密碼:核發的App Secret。
      3. 模式:認證的模式。
      4. 授權碼:前一步驟所取得的授權碼。
      5. 導回網址:驗證成功後重新導向的網址。
(三)取得使用者資訊:介接的應用系統取得權杖後,即可向單一簽入系統請求登入使用者的資訊,臺北市數位學習教育中心會提供「請求使用者資訊網址」,介接的應用系統必須透過「請求使用者資訊網址」傳送相關參數,完成驗證後便可取得登入者帳號、登入者姓名及身分別等資訊。參數包含:權杖碼、帳號與簽章值,以下簡要說明各參數的功能。
      1. 權杖碼:上一步驟取得的權杖。
      2. 帳號:申請取得的App Key。
      3. 簽章值:由臺北市數位學習教育中心指定的簽章演算法產生,需要配合申請取得的APP Secret使用。

參、結語

針對跨組織的第三方單一簽入架構,雖然不是每一個網路應用系統都必須具備,但是單一簽入的架構,不論是對於網路應用系統的使用者或是提供者而言,都能提供許多使用上的便利與有效管理的優點。首先,對於使用者而言,使用者只需登入具備單一簽入架構的系統,就能使用在此架構下的各個網路應用系統。使用者不用多次登入,也不用牢記多組帳號與密碼,增加使用者對於網路應用系統良好的體驗。對於網路應用系統的提供者而言,可以有效減輕系統管理人員對於帳號驗證管理與帳號密碼資訊維護上的負擔。

當然,單一簽入也不是只要加入就一定完美,例如:單一簽入系統所包含的使用者或單位組織是否為我們所需的族群?單一簽入系統所能存取的資訊是否符合我們的需求?單一簽入系統的資訊安全管控措施是否完善?對於第三方單一簽入系統還有許多議題亟待大家共同來思考與解決。