[C#] 初探 WebAuth 簡單範例 (註冊+綁定裝置實作)

2022-11-14

之前再研究的時候需要用到 WebAuth 所以研究了一下,然後拆解了一個範例,拆得比較簡單,這也是為何之前,我都在研究關於 CBOR 的原因

因為在案例裡面很常出現。


我把原本案例改成三個步驟

1.註冊會員

2.登入會員+綁定裝置

3.登入會員+驗證裝置


這篇就主要針對註冊會員,還有登入+綁定裝置


1. 首先安裝一下 Fido2.AspNet


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://fidoalliance.org/specs/fido-v2.0-rd-20170927/fido-client-to-authenticator-protocol-v2.0-rd-20170927.html

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/


當麻許的超技八 2014 | Donma Hsu Design.