拆分架构导致的 WebAuthn 问题

WebAuthn Issue Due to Split Architecture

我目前正在 .Net 5.0 中开发一个独立的(非 .Net Core 托管的)Blazor WebAssembly 应用程序。我一直在尝试将几个 Asp.Net MVC WebAuthn 示例转换为我的 Blazor 应用程序以进行无密码身份验证。

我现在遇到的问题是由于此应用程序的体系结构引起的,因为它不是 Blazor Server 应用程序。我正在关注的 Asp.Net MVC 示例包含所有内容,包括托管在服务器上的客户端,而我的应用程序是拆分 Web 客户端/Web API 架构。

然而,到目前为止,我已经设法解决了这些差异的大部分问题,但现在我遇到的问题是在 Fido2NetLib 库的 Make Credential 请求中向服务器注册凭据的最后一个功能。在线:

 // 2. Verify and make the credentials
 var success = await _lib.MakeNewCredentialAsync(attestationResponse, options, callback);

我收到一条错误消息:“来源 https://localhost:44325 不等于原始来源 https://localhost:44309”。现在当然这是一个开发环境,但它在生产环境中与 API 完全相同,并且客户端托管在两个不同的域中。

如有任何想法,我们将不胜感激。我希望我可以将某些域列入“白名单”吗?

WebAuthn 将原点定义为 fully qualified origin. Per referenced RFC6454,这是方案、主机和端口的元组。不偏离标准就不能违反规则。

WebAuthn 非常适合使用单独的身份提供者(例如 Open ID Connect/IdentityServer4-based)作为处理凭据的来源,无论涉及的依赖方如何,它始终是相同的。