在通过webauthn登录到iframe时获取错误。
本文档中未启用“公开密钥-凭据-获取”功能。权限策略可用于将Web身份验证功能委托给跨源子帧。
下面是指向示例https://jsfiddle.net/14kj25nr/的链接。我直接通过test_account注册了一个用户“webauthn.io”,然后尝试通过jsfiddle登录到它。它说要使用publickey-credentials-get,但是我找不到一种方法让它工作。任何帮助都将不胜感激。
更新1:
我为iframe allow="publickey-credentials-get"添加了允许属性。它仍然给了我同样的错误。小提琴中的例子被更新了。
更新2:
来自IAmKale的建议。我做了以下更改,但仍然得到了相同的错误。更新了iframe allow="publickey-credentials-get *"的允许属性。
我使用Requestly铬扩展在RP的响应中添加Permissions-Policy头。在下面的屏幕截图中可以看到,我成功地在响应中添加了标题。但还是会犯同样的错误。会不会是jsfiddle的一些特定问题?还是我做错了什么?我正在使用Chrome版本96.0.4664.110。

更新3:
当我在本地主机中使用iframe而不是jsfiddle时,我会看到webauthn chrom弹出。但是登录仍然不成功,服务器返回POST https://webauthn.io/assertion 400。
发布于 2022-01-23 16:16:18
扩展Tim的答案后,嵌入RP的站点需要添加以下allow属性:
<iframe src="..." allow="publickey-credentials-get *" />规范对此有点模棱两可,但我认为RP还需要在对iframe的权限策略中指定的src的响应中设置以下header
Permissions-Policy: publickey-credentials-get=*如果您想要更多的粒度控制,可以将允许嵌入RP站点的特定URL白名单:
# Only specific sites
Permissions-Policy: publickey-credentials-get=("https://example.com")https://example.com是将RP站点嵌入到<iframe>中的页面的URL
一旦两部分都就位,我认为您将能够在iframe中触发navigator.credentials.get()。
发布于 2022-01-23 00:10:08
默认情况下,跨源iframes中禁用Web身份验证API。若要覆盖此默认策略并指示允许跨源iframe调用的[DiscoverFromExternalSource]方法,请在iframe元素上指定允许属性,并在允许属性值中包含公钥凭据获取功能标识符令牌。
https://stackoverflow.com/questions/70817061
复制相似问题