為什麼使用者不會照設定被要求驗證呢?淺談 SSO 的 Session

前言

雲端服務逐日盛行,我想大家應該也聽過 SAML 或者是 OpenID Connect 等的單一登入 (SSO) 驗證協定。透過這些協議,使用者在擁有眾多雲端服務的情況下也不需要記下多組帳號密碼,只需記住一組即可以登入到所有設定的服務中。

在 SAML 或者是 OpenID Connect 的單一登入協議中,都有身份提供者和服務提供者的角色。身份提供者,在 SAML 中被稱作 Identity Provider (以下簡稱 IdP);OpenID Connect 中則會被稱為 OpenID Provider (以下簡稱 OP)。

服務提供者,在 SAML 中被稱作 Service Provider (以下簡稱 SP) ;OpenID Connect 中則會被稱為 Relying Party (依賴方,以下簡稱 RP)。

舉個例子來說,Google 的 G Suite,它同時擁有身份提供者 (Google Account) 跟服務提供者 (Gmail, Google Calendar, Google Drive 等) 的角色。當使用 HENNGE Access Control 來做單一登入的時候,就是將身份提供者的身份轉交給 HENNGE Access Control 來處理,可以做到無法單由 G Suite 達成的身份驗證項目。

關於 SAML 和 OpenID Connect 細節,可以參考以下連結。

SAML :
http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html

OpenID Connect :
https://openid.net/developers/specs/

將單一登入的機制帶到企業中,使用情境相較於個人使用需要更加的注重資訊安全方面的考量。IT 管理者可能會希望藉由定期促使使用者做身份驗證的方式來確保企業的資訊安全。這時就會去考量到雲端服務的工作階段時間 (Session)。

IT 管理者卻忽略了......

但是,往往 IT 管理者會專注在負責登入驗證身份提供者方的工作階段時間上,忽略了服務提供者方所擁有的工作階段時間設定。因此有時 IT 管理者自認為已經設定好讓使用者每一週就要做一次驗證,卻有使用者超過幾個月都沒有被要求做驗證,繼續使用服務提供者所提供的服務。

為什麼這樣的事情會發生呢?

以下就讓我來簡單說明一下流程。
*在以下示意圖中為方便理解省略了不同協議中的眾多細節。可能會和實際的情況有一點出入,敬請見諒。

簡易驗證流程說明

1. 在使用單一登入協議的環境裡如同以下示意圖,使用者會先向身份提供者做身份的驗證,再透過其驗證結果登入到服務提供者的系統裡。

2. 完成一連的登入驗證流程後,身份提供者和服務提供者都會擁有各自的工作階段時間 (Session)。

3. 使用者使用一段時間之後,如果服務提供者方的工作階段時間過期,就會向身份提供者要求身份驗證。此時如果身份提供者方還在上一次登入時的工作存取時間內,就會直接再次給予服務提供方驗證結果;如果身份提供者方的工作階段時間已過期,則將會要求使用者再重新做一次身份驗證。

4. 從以上流程中可以得知,假如 IT 管理者將身份提供者方的工作階段時間設為 1 週 (148小時),服務提供者方的工作階段時間設定為永久,如此一來服務提供者方的工作階段時間將永遠不會過期,意指使用者在使用此服務的時候除了第一次以外將永遠不會被要求做身份提供者方的身份驗證。

結語

在使用單一登入的環境中,使用者不太會主動去連線至身份提供者的服務,通常都會是服務提供者方的工作階段時間過期,才會需要到身份提供者服務做身份的驗證。因此在考量工作階段時間的設定內容時,IT 管理者必須要同時顧及到身份提供者方跟服務提供者方的所具有的相關設定內容,才有辦法顧及全貌,真正實現符合公司營運規定的設定。

*關於各服務的工作階段時間相關設定,請向各廠商詢問。

WRITTEN BY
Seisho Jo