[英]WebAuthn authentication and registration using TouchID on two different browsers?
一個人注冊一個新帳戶(通過credentials.create
)並隨后使用同一個瀏覽器(通過credentials.get
)登錄的情況很簡單,因為在調用credentials.create
時,用戶必須授予他們的瀏覽器權限對給定域使用 Touch ID。 例如,請參見下圖,這是一個提示用戶在給定域上允許 Touch ID 的模式,由credentials.create
觸發:
如果您在如上所示的模態中 select “OK”,則可以使用 Touch ID 完成注冊。 當您隨后使用同一瀏覽器登錄您的帳戶時,您會看到下圖所示的模式,它提供了使用安全密鑰和之前注冊的 Touch ID 進行身份驗證之間的選擇。 此模式由credentials.get
觸發:
這就是問題所在:如果用戶通過另一個瀏覽器(例如 Chrome)創建了一個帶有 Touch ID 的帳戶( credentials.create
),然后嘗試在 Safari 上進行身份驗證( credentials.get
),Safari 認為他們只能訪問安全密鑰,並且不提供 Touch ID 作為選項。 請參閱以下內容以供參考:
這是 WebAuthn 本身的已知限制嗎? 人們通常會使用不同的瀏覽器訪問同一個網站,期望他們可以在任何瀏覽器上登錄,而不管他們用來創建帳戶的瀏覽器是什么。 鑒於此,如果 WebAuthn 不支持這種行為,那就很麻煩了。
最重要的是 - 開發人員如何解決這個問題? 您是否通知用戶他們不僅與他們最初注冊到其帳戶的內部設備相關聯,還與他們使用的瀏覽器相關聯? 您是在credentials.get
credentials.create
? 這似乎是一個 hack,但我對任何解決方案都感興趣。
首先十分感謝。
這是 WebAuthn 本身的已知限制嗎?
這與 WebAuthn API 和 macOS無關。 迄今為止,macOS 是唯一一個需要 WebAuthn 憑證管理來考慮憑證是在哪個瀏覽器中注冊的平台。
...開發人員如何解決這個問題?
解決此問題的一種方法是在注冊時(通過傳統用戶代理、較新的navigator.userAgentData等)使用新憑據存儲用戶的操作系統和瀏覽器。 然后,在 auth 中,獲取用戶當前的操作系統和瀏覽器信息,並使用它來過濾憑據以包含在您將傳遞給navigator.credentials.get()
的allowCredentials
中。 如果在 macOS 上注冊了憑據,則也按瀏覽器過濾; 在其他平台上,您可以簡單地按操作系統過濾。
如果在過濾用戶憑據后在 macOS 上allowCredentials
為空(即因為用戶有一個在 Safari 中注冊但用戶當前正在使用 Chrome 的單個憑據),您需要處理該問題並在提示之前提示用戶以其他方式登錄他們在 Chrome 中注冊 Touch ID。
處理這非常煩人,但這是 macOS 上 WebAuthn 的現實。 手指越過 Apple 的密鑰(現在在 Monterey 的技術預覽中)一旦更廣泛地推出,將提供與 iOS 的操作系統級憑據存儲類似的體驗……
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.