別吃錯藥:四大身份驗證場景的協議選擇
不同應用場景選錯身份驗證協議的后果很嚴重,因為錯誤的身份驗證協議會破壞安全架構基礎,并限制未來擴展。那么,常見的身份驗證用例都有哪些推薦協議呢?
身份驗證系統無論安裝在內部,還是托管在外部,都需要謹慎選擇合適的身份驗證協議。符合您用例的正確協議,可以使整個系統安全高效運行,并且驅動未來擴展和兼容各種標準。此外,若想使用戶身份可被外部服務識別,還需考慮如何在保證過程安全的情況下,便于這些服務攝入用戶身份數據。
身份驗證指的是通過某種方式識別用戶身份,授權資源訪問。本文所討論的身份驗證協議包括 SAML 2.0、OpenID Connect (OIDC) 和 OAuth2。注意,OAuth2 并非身份驗證協議,但因其使用廣泛,可使用戶通過 Facebook、亞馬遜等社交服務提供商登錄,而納入討論。
身份、身份驗證和授權協議。
這三個協議在功能上常有重疊。
- 身份協議提供關于用戶的信息,比如永久標識符、電話或電子郵件地址,可用作該用戶登錄您系統的長期標識,從而驗證該用戶并授權資源訪問。SAML 和 OIDE 是最常見的例子。
- 身份驗證協議未必需要個人標識符。比如說,Kerberos 系統就基于透明匿名密鑰交換,密鑰本身不包含標識數據。
- OAuth2 和 UMA 等身份驗證協議提供的方法,無需資源擁有者共享憑證,即可獲得受保護資源的訪問權限。此類協議的一個重要方面是交互式用戶許可。OAuth2 協議常用于臨時身份和身份驗證,使用標識符等 OAuth2 過程中返回的用戶數據。
由于其靈活性,身份協議在政府、企業和消費領域越來越常用,作為身份驗證的最佳實踐方法,廣泛應用于 Web、移動應用和桌面應用程序。這些協議可能被用于單點登錄 (SSO) 應用,需注意 OAuth2 相關問題。
去中心化身份
說到身份驗證,不得不提 DID(或稱自主身份)。這種身份系統依賴用戶存儲在移動設備上的身份屬性,使用分布式賬本技術驗證這些屬性的持有情況。當前,將這些系統與成熟標準身份協議集成的建議不斷提出,現狀就是復雜自定義協議,比如 uPort。因此,目前不推薦在通用身份或身份驗證用例中使用 DID。不過,Avoco Secure 等提供的編排 API,倒是有望通過轉譯為標準協議而跨越這個障礙。
四大身份驗證用例協議推薦
1. 物聯網設備及相關應用
此用例中,應用采用數字身份控制對應用及應用相關云資源的訪問,比如說,亞馬遜 Alexa 等物聯網設備。Alexa 用于創建數據存儲賬戶,然后從中共享數據。
協議選擇:OIDC/OAuth2
這是個授權訪問資源的簡單用例,OAuth2 就很合適,尤其是考慮到智能設備使用相對簡單的情況,比如無鍵盤或屏幕的智能設備。
2. 消費者身份提供商 (IdP)
需向依賴方 (RP) 提供身份數據的在線銀行或政府服務歸屬該類用例。IdP 持有敏感數據,用戶屬性通過所謂了解客戶 (KYC) 過程驗證,提供達到標準水平的身份。僅受許可的 RP 能夠訪問 IdP。
協議選擇:SAML、OIDC
SAML 適用于安全要求高的場合。RP 和 IdP 之間的交換都能被雙方數字簽署和驗證。這就保障了雙方身份的真實性,防止出現某一方被假冒的情況。此外,還可以加密來自 IdP 的斷言,以便不僅僅依賴 HTTPS 防止攻擊者觸及用戶的數據。若想進一步夯實安全性,還可以定期輪轉簽名和加密密鑰。
OIDC 若要達到相同的安全水平,需要額外的加密密鑰,如開放銀行 (Open Banking)擴展中呈現的那樣,其設置和維護可能相對較繁瑣。但是,OIDC 得益于 JSON 的使用,相對 SAML 更容易為移動應用所用。
3. 醫療數據共享門戶
該用例中,此門戶需支持高敏感醫療數據的多種數據共享方式。
協議選擇:OIDC、UMA
此處相對合適的選項是 OIDC,因為可能涉及多種設備,其中有些不是基于瀏覽器的,也就排除掉了 SAML。與 OIDC 關聯的內置許可強化了數據共享的隱私性。此外,還可運用簽名和加密增強安全性,達到處理此類數據所需的合規要求。
4. 支持身份服務大環境中多服務提供商的系統
保險服務協會就是該用例的一大樣本。系統需向用戶提供使用現有身份賬戶連接這些服務的方式。用戶可能需要添加所需附加數據。
協議選擇:OIDC、OAuth2 和 SAML
用戶應能選擇一家 IdP,以便已經在不同 IdP 處擁有賬戶的用戶可以方便操作。舉個例子,有些用戶可能持有政府頒發的身份;其他用戶可能僅擁有亞馬遜賬戶或淘寶賬戶。
賦予用戶不同賬戶類型的選擇,可以使用戶無需先經歷在線注冊和驗證過程,就能很方便地訪問各保險服務。但這就要求每個 RP 支持多個協議,并需處理一家提供商的身份可能不支持全部所需主張或屬性的問題。而解決方案就是使用身份編排代理,或采用能夠翻譯 RP 所需協議和收集全部所需屬性的代理服務。
【本文是51CTO專欄作者“李少鵬”的原創文章,轉載請通過安全牛(微信公眾號id:gooann-sectv)獲取授權】