為什麼單一登入 (SSO) 更好
單一登入 (SSO) 是一種很棒的方式,可以簡化驗證模型並提升每個應用程式的用戶體驗。以下是原因。
單一登入 (SSO) 是一種技術,允許用戶一次驗證即可訪問多個應用程式。如果你只有一個應用程式,這可能看起來有點過頭。不過,從一開始就使用 SSO 可以為你省去很多麻煩,並且實施 SSO 比你想的容易。
在我們開始之前,我們需要注意有兩種類型的 SSO:
- 第一種類型是當你有多個應用程式共享相同的用戶資料庫時,這是我們在本文中將討論的 SSO 類型。
- 第二種類型是當你的客戶有一個集中式身份提供者 (IdP) 並且你需要與之整合時。這超出本文的範疇。
為什麼選擇 SSO?
簡化驗證模型
SSO 最明顯的好處是它簡化了驗證模型。想像一下,你從一個在線商店開始,初始的驗證模型很簡單:
隨著你的業務增長,你決定添加一個商店管理應用程式,以允許商店所有者管理他們的商店。現在你有兩個需要驗證用戶的應用程式。
這裡有一些選擇:
1. 你可以為商店管理應用程式創建一個獨立的用戶資料庫。
這是最簡單的解決方案,但這意味著你需要為商店管理應用程式實施驗證過程,且用戶需要創建新賬戶來使用應用程式。
2. 你可以對兩個應用程式使用相同的用戶資料庫。
這是一個更好的解決方案,因為用戶不需要創建新賬戶。然而,你仍然需要為商店管理應用程式實施驗證過程。
3. 你可以使用 SSO。
這是目前最好的解決方案。你不需要實施另一個驗證過程,且用戶不需要為商店管理應用程式創建新賬戶。此外,你可以添加更多的應用程式和登入方式而不改變驗證模型或用戶體驗。
改善用戶體驗
SSO 在兩個方面改善了用戶體驗:
- 用戶可以在多個應用程式中共享相同的賬戶。
- 一旦用戶在一個應用程式中登入,他們在相同裝置上的其他應用程式中不需要再次登入。
這裡可能會出現一些擔憂,但都可以解決。
1. 如何區分應用程式?
單一登入並不意味著我們將所有應用程式一視同仁。在眾所周知的開放標準 OpenID Connect 中,每個應用程式被稱為客戶端,而身份驗證流程會根據客戶端類型有所不同。雖然終端用戶不需要知道差異,但客戶端類型對於驗證伺服器確定驗證流程很重要。
2. 如果用戶不想共享相同的賬戶怎麼辦?
這是一個合理的擔憂,但這不是 SSO 的問題。如果用戶不想共享相同的賬戶,他們可以為新應用程式創建新的賬戶。關鍵是給用戶選擇的權利。
3. 如果我需要限制對某些應用程式的訪問怎麼辦?
事實上,SSO 是一種驗證的技術,而訪問控制則屬於授權。SSO 可以與訪問控制分離。舉例來說,你可以使用 SSO 來驗證用戶,然後使用 基於角色的訪問控制 (RBAC) 來限制對某些應用程式或資源的訪問。
要了解更多關於驗證和授權的信息,請查看 CIAM 101: Authentication, Identity, SSO。
4. SSO 需要重新導向用戶到驗證伺服器。
重新導向是驗證的標準做法。考慮到用戶體驗,我們可以利用多種技術來減少摩擦:
- 使用刷新令牌來減少驗證的頻率。
- 以特定的登入方式,例如 Google 或 Facebook,初始化驗證過程以減少步驟數。
- 利用無聲驗證來加速驗證過程。
增強安全性
1. 所有安全相關操作的集中位置
SSO 使你可以在集中位置管理所有與安全相關的操作。例如,正如我們在前一部分中提到的,SSO 仍然可以區分應用程式並為每個應用程式應用平台特定的驗證流程。如果沒有 SSO,你需要根據應用程式類型實施各種驗證流程。
此外,像 多因素驗證 (MFA) 這樣的高級安全功能更容易通過 SSO 實施,而不會擾亂驗證模型。
2. 減少攻擊面
理論上,SSO 減少了攻擊面,因為你只需要保護一個驗證伺服器,而不是多個應用程式。集中化的方式也使監控和檢測可疑活動變得更容易。
3. 經歷過考驗的標準和協議
如 OpenID Connect 和 OAuth 2.0 這樣的開放標準和協議在業界被廣泛使用,經過多年的考驗。它們都符合 SSO 的概念,並且被大多數身份提供者 (IdPs) 支持。通過將這些標準與 SSO 結合,你可以擁有一個安全可靠的驗證系統。
好吧,讓我們實施 SSO
實施 SSO 可能會很大且複雜,有許多事情需要考慮,例如:
- 標準和協議的合規性
- 不同客戶類型的驗證流程
- 多種登入方式
- 像 MFA 這樣的安全功能
- 用戶體驗
- 訪問控制
這些主題中的每一個都可以是一篇單獨文章而且可能會讓人不知所措。為了簡化起見,最好從提供開箱即用 SSO 的托管服務開始。我們的產品 Logto 就是這樣的服務,只需幾分鐘就能將它整合到你的應用程式中。
使用托管服務最常見的擔憂之一是供應商鎖定。幸運的是,這對 Logto 來說不是一個問題。Logto 建立在 OpenID Connect 和 OAuth 2.0 之上,天生就是開源的。我們優先考慮為客戶提供保障,並希望能賦予你選擇的自由。