[點晴永久免費OA]身份認證的盡頭竟然是無密碼?
當前位置:點晴教程→點晴OA辦公管理信息系統
→『 經驗分享&問題答疑 』
概述幾乎所有的系統都會面臨安全認證相關的問題,但是安全相關的問題是一個很麻煩的事情。因為它不產生直接的業務價值,而且處理起來復雜繁瑣,所以很多時都容易被忽視。很多后期造成重大的安全隱患,往往都是前期的不重視造成的。但慶幸的是安全問題是普遍存在的,而且大家面臨的問題幾乎相同,所以可以制定行業標準來規范處理,甚至是可以抽出專門的基礎設施(例如:AD、LDAP 等)來專門解決這類共性的問題。總之,關于安全問題非常復雜而且麻煩,對于大多數 99% 的系統來說,不要想著在安全問題領域上搞發明和創新,容易踩坑。而且行業的標準解決方案已經非常成熟了。經過長時間的檢驗。所以在安全領域,踏踏實實的遵循規范和標準就是最好的安全設計。 HTTP 認證HTTP 認證協議的最初是在 HTTP/1.1標準中定義的,后續由 IETF 在 RFC 7235 中進行完善。HTTP 協議的主要涉及兩種的認證機制。 基本認證常見的叫法是 HTTP Basic,是一種對于安全性不高,以演示為目的的簡單的認證機制(例如你家路由器的登錄界面),客戶端用戶名和密碼進行 Base64 編碼(注意是編碼,不是加密)后,放入 HTTP 請求的頭中。服務器在接收到請求后,解碼這個字段來驗證用戶的身份。示例:
雖然這種方式簡單,但并不安全,因為 摘要認證主要是為了解決 HTTP Basic 的安全問題,但是相對也更復雜一些,摘要認證使用 MD5 哈希函數對用戶的密碼進行加密,并結合一些鹽值(可選)生成一個摘要值,然后將這個值放入請求頭中。即使在傳輸過程中被截獲,攻擊者也無法直接從摘要中還原出用戶的密碼。示例:
補充:另在 RFC 7235 規范中還定義當用戶沒有認證訪問服務資源時應返回
這一規范目前應用在所有的身份認證流程中,并且沿用至今。 Web 認證表單認證雖然 HTTP 有標準的認證協議,但目前實際場景中大多應用都還是基于表單認證實現,具體步驟是:
常見的表單認證頁面通常如下:
為什么表單認證會成為主流 ?主要有以下幾點原因:
表單認證傳輸內容和格式基本都是自定義本沒啥規范可言。但是在 2019 年之后 web 認證開始發布標準的認證協議。 WebAuthnWebAuthn 是一種徹底拋棄傳統密碼的認證,完全基于生物識別技術和實體密鑰作為身份識別的憑證(有興趣的小伙伴可以在 github 開啟 Webauhtn 的 2FA 認證體驗一下)。在 2019 年 3 月,W3C 正式發布了 WebAuthn 的第一版規范。
相比于傳統的密碼,WebAuthn 具有以下優勢:
總的來說,WebAuthn 是未來的身份認證方式,通過提供一個更安全、更方便的認證方式,目的是替代傳統的基于密碼的登錄方法,從而解決了網絡安全中的一些長期問題。WebAuthn 目前已經得到流程的瀏覽器廠商(Chrome、Firefox、Edge、Safari)、操作系統(WIndows、macOS、Linux)的廣泛支持。 實現效果 當你的應用接入 WebAuthn 后,用戶便可以通過生物識別設備進行認證,效果如下:
實現原理 WebAuthn 實現較為復雜,這里不做詳細描述,具體可參看權威的官方文檔,大概交互過程可以參考以下時序圖:
登錄流程大致可以分為以下步驟:
WebAuthn 采用非對稱加密的公鑰、私鑰替代傳統的密碼,這是非常理想的認證方案,私鑰是保密的,只有驗證器需要知道它,連用戶本人都不需要知道,也就沒有人為泄漏的可能;
因為公眾號文章不適合加入過多的演示代碼,想要手上體驗的可以參考 okta 官方給出基于 Java 17 和 Maven 構建的 webauthn 示例程序,如下: 轉自博客園,作者肖衛衛 https://www.cnblogs.com/xiao2shiqi/p/18118300 該文章在 2024/4/8 11:36:58 編輯過 |
關鍵字查詢
相關文章
正在查詢... |