發布日期:2025 年 6 月 5 日
密碼金鑰的設計宗旨是徹底改變登入體驗,提供比密碼更簡單、快速且安全的替代方案。這份檢查清單將引導您瞭解實作密碼金鑰的重點,進而達成最佳使用者體驗 (UX) 成果。
如何使用這份檢查清單
這份檢查清單適用於在驗證流程中導入密碼金鑰的開發人員和產品團隊。其用途如下:
- 確認您的實作方式符合下列文章所述的現代密碼金鑰 UX 最佳做法。
- 找出可提升可用性、安全性和相容性的必要和選用元素。
- 在開發期間和部署前,請檢查導入狀態。
- 遵循最佳做法,協助使用者採用及提升系統互通性。
這些功能可協助您為使用者提供安全無虞的流暢體驗。
註冊密碼金鑰
如要在網站上順利從密碼轉換為密碼金鑰,關鍵在於具備完善的密碼金鑰註冊功能。請按照「為無密碼登入建立密碼金鑰」一文中的操作說明,在網站上建構密碼金鑰註冊功能。除了基本的密碼金鑰註冊功能外,您還應檢查下列事項:
✅ 將 "platform" 指定為驗證器附件值,傳遞至 navigator.credentials.create(),以建立升級的密碼金鑰。
- 為被動建立密碼金鑰的使用者提供最佳化且順暢的密碼金鑰建立流程。
✅ 先使用使用者可用的最強驗證方式驗證身分,再允許對方建立密碼金鑰。
- 這項措施可防止攻擊者在遭盜用的帳戶中建立密碼金鑰,因此非常重要。
✅ 防止使用 excludeCredentials 為同一密碼金鑰供應商建立重複的密碼金鑰。
- 許多密碼金鑰供應商只允許每個帳戶和 RP ID 有一個密碼金鑰。避免建立重複的內容。
✅ 使用 AAGUID 識別密碼金鑰提供者,並為使用者命名憑證。
- 將密碼金鑰與密碼金鑰提供者建立關聯,是直覺式的憑證呈現方式。
✅ 如果嘗試註冊密碼金鑰失敗,請發出信號 PublicKeyCredential.signalUnknownCredential()。
- 如果有多餘的密碼金鑰,可能會造成混淆。如果伺服器無法註冊密碼金鑰,請通知密碼金鑰供應商。
✅ 為使用者帳戶建立及註冊密碼金鑰後,傳送通知給使用者。
- 請務必讓使用者知道密碼金鑰已建立,尤其是由他人建立時。
密碼金鑰驗證
同時為密碼使用者和密碼金鑰使用者提供服務,且盡量減少摩擦,可能是一項挑戰。請按照「透過表單自動填入功能使用密碼金鑰登入」一文的指示,在網站上建構密碼金鑰表單自動填入功能。除了基本的密碼金鑰驗證功能外,您還應檢查下列事項:
✅ 允許使用者透過表單自動填入功能,使用密碼金鑰登入。
- 如果您的網站要從密碼改用密碼金鑰,為同時支援這兩種驗證方式,最好的做法是使用瀏覽器的表單自動填入功能。
✅ 如果系統在後端找不到相符的密碼金鑰憑證,請發出信號:
PublicKeyCredential.signalUnknownCredential()。
- 如果有多餘的密碼金鑰,可能會造成混淆。將無法使用的密碼金鑰告知密碼金鑰提供者,方便對方刪除。
✅ 如果使用者登入後尚未建立密碼金鑰,請提示他們手動建立。
- 如果使用者尚未建立密碼金鑰,請鼓勵他們建立。
✅ 在使用者透過密碼 (和第二個驗證因子) 登入後,自動建立密碼金鑰 (有條件建立)。
- 加快使用者採用密碼金鑰的速度。
✅ 如果使用者已透過跨裝置密碼金鑰登入,系統會提示建立本機密碼金鑰。
- 建立本機密碼金鑰後,使用者下次登入時就不必掃描 QR code。
✅ 登入後,向供應商發出可用密碼金鑰清單和更新使用者詳細資料 (使用者名稱、顯示名稱)訊號
- 在伺服器和密碼金鑰供應商之間,讓密碼金鑰清單和使用者詳細資料保持同步,可提升使用者體驗。
管理密碼金鑰
讓使用者充分瞭解密碼金鑰,有助於他們進一步掌握相關資訊,並控管密碼金鑰。請按照「協助使用者有效管理密碼金鑰」一文中的操作說明,在網站上建構密碼金鑰管理功能。請檢查下列事項:
✅ 允許使用者在密碼金鑰管理頁面管理密碼金鑰。
- 建立集中管理密碼金鑰的位置。
✅ 支援註冊多個密碼金鑰。
- 使用者可以註冊多個密碼金鑰,避免無法登入帳戶,也不必改用較弱的驗證方法。
✅ 允許使用者在管理頁面上新增及使用新式且彈性的密碼金鑰類型。
✅ 顯示密碼金鑰名稱。
- 根據 AAGUID 命名密碼金鑰,並提供使用者密碼金鑰的具體視覺化資訊。
✅ 指出密碼金鑰是可同步處理或無法同步處理。
- 如果密碼金鑰未同步,請通知使用者。
✅ 允許使用者從伺服器移除公開金鑰。
✅ 從伺服器移除相關聯的公開金鑰時,發出密碼金鑰清單信號。
- 讓伺服器和密碼金鑰供應商的密碼金鑰清單保持同步,可提升使用者體驗。
其他注意事項
✅ 在使用者更新使用者詳細資料 (使用者名稱、顯示名稱) 時,發出信號。