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