前言
不少網站登入時都有關於「Single Sign-On」的選項,像是只要登入 Google 帳號,就可以橫跨不同服務如 YouTube、Gmail,從痛點了解 SSO 如何解決多個服務間登入造成的潛在問題與相關流程,打造更方便與安全的登入體驗。
了解問題點
當登入許多網站使用大量的帳號與密碼時,為了方便管理人們會傾向使用簡單好記的密碼或乾脆使用相同密碼,導致糟糕的體驗和潛在的資訊安全漏洞,SSO 出現即是為了達成「一次登入處處通行」的目的。
SSO 原理
SSO 建立在聯合身份(Federated Identity)的概念上,舉例:
B 公司和 A 公司簽了合作協議,所以只需要出示 A 公司的員工證就可以進入 B 公司的大樓,而不用再辦一張 B 公司的門禁卡。
了解相關定義
- SAML
- 服務提供者(Service Provider, SP):提供服務的一方,例如 Slack 或 Notion
- 身份提供者(Identity provider, IdP):驗證使用者身份的一方,例如「使用 Google 帳戶登入」,則 Google 就是 IdP
- OIDC
- 依賴方(Relying Party, RP):一個需要驗證使用者身分的應用程式或服務
- OpenID 提供者(OpenID Provider, OP):等於 IdP,充當用戶身份驗證的可信任第三方
了解 SSO 實作標準和協定
安全聲明標記語言 SAML
(Security Assertion Markup Language, SAML) 一種基於 XML 的標準。
OIDC(OpenID Connect)
建立在 OAuth 2.0 之上,整合授權與驗證。相較於 SAML 使用 XML,OIDC 使用 JWT 格式的憑證。
Kerberos
常用於內部網路環境,特別是在 Windows 網域(如 Active Directory)中廣泛部署。Kerberos 採用對稱金鑰加密方式,使用票證(Ticket)來證明身份,在企業內部網路能提供快速且安全的 SSO 體驗。
總結
- SAML (2002):在企業環境(尤其是傳統 IT、內網應用)誕生,設計時以「瀏覽器為中心」的 Web 應用為主要場景。
- OIDC (2014):延伸自 OAuth 2.0,專門針對「現代 Web 與 Mobile 應用」設計,考慮了 API 驅動、App、單頁應用(SPA)的需求。
- Kerberos (1980s):主要用於企業內部網路,特別是在 Windows 網域(Active Directory) 廣泛部署。透過對稱金鑰與票證機制 提供快速、安全的 SSO 體驗,避免在網路上重複傳輸密碼。
Single Sign-On (SSO) 透過讓用戶只需使用一組帳號密碼,即可安全登入並存取多個不同的網站和服務,大幅提升使用的便利性與管理效率。
雖然使用者不需要為每個網站設定不同密碼,降低了因密碼重複或過於簡單而被攻擊的風險,但便利同時也帶來了風險:若 SSO 主帳號遭到入侵,攻擊者就可能取得所有關聯服務的存取權限。除此此外,SSO 系統本身因為集中管理認證,若發生故障,會產生單點故障問題,導致用戶無法登入任何服務
延伸閱讀
- What is Single Sign On (SSO) - IBM Technology
- What Is Single Sign-on (SSO)? How It Works - ByteByteGo
- SSO 介紹 - Yi-Hsuan Hung
- OAuth 2.0 and OpenID Connect (in plain English) - OktaDev