[C#] 初探 WebAuth 簡單範例 (註冊+綁定裝置實作)
之前再研究的時候需要用到 WebAuth 所以研究了一下,然後拆解了一個範例,拆得比較簡單,這也是為何之前,我都在研究關於 CBOR 的原因
我把原本案例改成三個步驟
1.註冊會員
2.登入會員+綁定裝置
3.登入會員+驗證裝置
這篇就主要針對註冊會員,還有登入+綁定裝置
2.其實在 Fido2.AspNet 中有一個 Fido2User 的物件 對我寫 sample 來說夠用只是少了一個 password 所以我直接繼承來使用
3. 註冊用戶的部分,其實也沒啥好說的,中間我也沒用到任何資料庫單純寫檔案紀錄資料
4.登入會員+綁定裝置,其實在後端在登入後會產生一個新的憑證放在 session ( fido2.attestationOptions ) 中,當然這邊你可以改寫到 redis 或是其他Temp DB
JS Code:
C# Code:
result:
如果你是用 Chrome 也可以使用手機驗證
這邊有說不清楚的地方這邊有所有的 source code 您可以直接下載參考
Demo Source Code: https://github.com/donma/FIDO2SimpleSample
Online Sample: https://dmauth.azurewebsites.net/
參考文獻:
https://webcodingcenter.com/web-apis/Web-Authentication-(WebAuthn)
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/slice
https://stackoverflow.com/questions/59799729/webauthn-getting-the-credentialpublickey-length
https://stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript
https://stackoverflow.com/questions/54045911/webauthn-byte-length-of-the-credential-public-key
重點參考:
https://blog.techbridge.cc/2019/08/17/webauthn-intro/
https://www.wenwoha.com/blog_detail-150.html
https://www.readfog.com/a/1648324634492375040
https://github.com/passwordless-lib/fido2-net-lib
範例改寫參考:
https://fido2-net-lib.passwordless.dev/