輕量級開源用戶身份驗證解決方案 - Hanko
Hanko 是一個輕量級的開源用戶身份驗證解決方案,是一個 Auth0 的開源替代品。該項目是一個由六個開發(fā)人員和設(shè)計師組成的團隊,項目的任務(wù)是徹底改變我們的在線認證方式。在過去的 4 年里,團隊一直在研究網(wǎng)絡(luò)和移動端的用戶認證,然后決定將團隊所學到的所有知識投入到一個開源項目中。
但為什么是另一個認證解決方案呢?
因為隨著密碼的第一個重要替代物 - passkeys 的出現(xiàn),我們驗證網(wǎng)站和應(yīng)用程序的方式將發(fā)生根本性的變化,而這種變化使我們能夠重新思考用戶登錄的工作方式。而 Hanko 則就是這樣的一個開源項目。
特性
Hanko 具有非常多的特性:
- 開放源碼的用戶認證:首先,Hanko? 是一個開源的用戶認證解決方案,特別容易集成到網(wǎng)站和 app。Hanko 提供了一個網(wǎng)絡(luò)組件,可用于現(xiàn)代前端框架(Vanilla JS、React、Next、Vue......),并可通過 CSS 完全定制,完美地融入品牌。
- 我們的密碼是什么?有一件事我們做得與其他人不同,我們退一步看了看認證技術(shù)的發(fā)展方向。在互聯(lián)網(wǎng)最具影響力的標準機構(gòu) W3C 的幕后,一個永久替代密碼的愿景已經(jīng)形成。經(jīng)過多年的醞釀,這一替代方案終于在今年得以實現(xiàn),它被稱為 passkeys。
- 使用通行證的無密碼賬戶:有史以來第一次,通行證實現(xiàn)了真正的無密碼認證體驗。與最近的其他技術(shù)(如 Magic Links 或發(fā)送到你手機上的代碼)不同,Hanko 的通行證實現(xiàn)提供了一種方便且非常安全的登錄體驗,不需要切換上下文。通過結(jié)合生物識別技術(shù)和密碼質(zhì)詢-響應(yīng)協(xié)議,passkeys 可有效防止網(wǎng)絡(luò)釣魚和 SIM 卡交換等最常見的攻擊。99% 的情況下,passkeys 登錄是使用 Touch ID 或 Face ID 及其同等的生物識別登錄,勢必會得到這些技術(shù)在被引入解鎖我們的手機后的 90% 以上的采用率,我們?yōu)檫@種變化構(gòu)建了 Hanko。
- 無密碼之旅從密碼開始:Hanko 是圍繞著 passkeys 登錄體驗而定制的,引導用戶遠離密碼。但我們確保不會忘記今天所有人都在使用的東西,那就是密碼。這就是為什么我們?nèi)匀话ǎ蛇x擇的)密碼支持以及所有必要的用戶流,以結(jié)合傳統(tǒng)的密碼使用行為和新的 passkeys 用戶體驗。
- 對于建設(shè)者來說:Hanko 是一個具有超強功能的認證解決方案,專注于即將到來的從密碼到 passkeys 的旅程。Hanko 是那些正在尋找現(xiàn)代認證解決方案的團隊的完美選擇,同時也是每一個想要接受 passkeys 的現(xiàn)有登錄者的理想插件。
安裝
要使用 Hanko 最快的方式是使用 docker-compose。首先 clone 項目:
$ git clone https://github.com/teamhanko/hanko.git
然后在 hanko 目錄下面執(zhí)行下面的命令:
$ docker-compose -f deploy/docker-compose/quickstart.yaml -p "hanko-quickstart" up --build
服務(wù)啟動并運行后,可以在 localhost:8888 打開示例登錄。為了在沒有您自己的 smtp 服務(wù)器的情況下接收電子郵件,我們添加了 mailslurper,它將在 localhost:8080 可用。
整個 Hanko 項目包括 3 個核心的模塊:
- backend:身份驗證 API,支持 passkeys、passcodes 和 password,以及用戶管理和 JWT 令牌發(fā)行
- hanko-js:為 Hanko 后端制作的 Web 組件,具有出色的登錄體驗,并且高度可定制
- example:快速入門示例應(yīng)用程序,展示 Hanko 的優(yōu)勢并作為參考實現(xiàn)
Hanko 項目方也提供了一個在線的示例網(wǎng)站 https://example.hanko.io/ 供我們體驗,感興趣的朋友可以前往測試體驗。比如在瀏覽器端使用 passkey 進行登錄的時候會彈出如下所示的對話框讓我們?nèi)ミx擇認證的方式,可以直接使用當前設(shè)備、添加一部 Android 手機或者 USB 連接的設(shè)備等等。
Git 倉庫:https://github.com/teamhanko/hanko。