ASP.NET Core 整合 WebAuthn/Passkey 無密碼登入之精簡範例
2 | 1,541 |
前幾個星期入手 YubiKey,花了點時間研究 WebAuthn / CTAP2 規格,從 .NET FIDO2 程式庫的 Passwordless 與 Usernameless 範例弄懂 WebAuthn 無密碼登入與 Passkey 的差異,最後我打算整理一個 ASP.NET Core 整合 Passkey 註冊與登入的精簡版範例專案,作為本次研究的結尾。
FIDO2 .NET Library 本身有提供範例專案,但是使用 Razor Page + MVC Controller,並同時包含 MFA、Passwordless、Passkey 等好幾種情境,我只打算針對 Passkey,使用 ASP.NET Miminal API、靜態 HTML/JavaScript 跟一個 Controller 處理必要的 WebAPI ,做為日後其他專案要整合 Passkey 登入的參考。
FIDO2 .NET Library 程式庫範例使用者資料及公鑰信物只存在記憶體,也沒有登入狀態,我做了一點小改良,資料改用 JSON 保存,以免程式結束實體金鑰裡的 Passkey 瞬間報廢,另外弄了個購物網站的登入狀態虛擬場景,方便觀察註冊、登入、登出的狀態差異。
專案原本只打算自己內用,不過既然花了時間整理,就放上 Github 讓有需要的同學多一份資料可參考。
My example project to integrate passkey login into ASP.NET Core web.
Comments
# by Sean
感謝黑大的分享 實際clone專案下來實際跑一次,但是是使用android手機當Authenticator 可以成功註冊與登入範例網站 但實際做完測試後,想要刪除手機上的passkey(參照您另一篇文章https://blog.darkthread.net/blog/webauthn-n-passkey-intro/ ) 卻發現無法找到localhost的密鑰可以刪除
# by Jeffrey
to Sean, 好奇,用手機當 Authenticator 進行測試,使用的網址應該不是 localhost 吧?