我正在开发一个 Saas 应用程序,它使用硬件密钥 (Yubikey、Titan Key),使用 WebAuthn/U2F 协议来实现 2 因素身份验证功能。 该功能非常适合在网页版中进行注册和身份验证。 但是,我的应用程序还有移动版本、桌面应用程序和浏览器扩展。如果我使用网页版注册密钥,则无法在其他版本中进行身份验证。
我认为问题是因为注册时密钥是使用网页版的域名注册的,而当我使用其他版本时验证失败,因为它不是同一个域名。
例如:我的密钥是注册的,域名是 example.com,从 chrome 扩展程序登录时,域名是 chrome-extension。
我如何解决这个问题,或者我如何从同一应用程序的不同形式进行身份验证。
WebAuthn 凭证的范围仅限于 RP ID。网站
www.example.com
可以使用 RP ID www.example.com
和 example.com
。 (大致上,您可以从域名左侧删除标签,但不能删除有效 TLD,因此没有 RP ID com
。)
移动应用程序可以使用任何 RP ID,但域必须通过在
/.well-known/
中的文件中列出它们来授权它们。 (Android和iOS之间的细节有所不同。)
Chrome 扩展程序只能使用
chrome-extension:
… RP ID。您不是第一个询问是否可以扩展的人,Web 扩展 CG 可能最终会定义一些东西,但目前我担心什么也没有。