You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebAuthn技术问题:能否筛选Passkey认证器?

仅允许Google、Apple、Microsoft Passkey认证器的实现方案

可以实现,但需要调整WebAuthn请求参数并结合后端验证来筛选认证器,以下是具体步骤:

当前参数的问题

你当前设置的authenticatorAttachment: "platform"仅限制使用平台认证器,但像1Password这类第三方应用也可以注册为平台认证器,因此仍会出现在选项列表中。要进一步限制到指定厂商,需要通过认证器的唯一标识符(AAGUID)来筛选。

具体实现步骤

1. 修改WebAuthn创建凭证的参数

调整请求中的attestation和extensions参数,以便获取认证器的元数据:

{
  "challenge": "nhkQXfE59Jb97VyyNJkvDiXucMEvltduvcrDmGrODHY",
  "rp": {"name": "CredMan App Test", "id": "credential-manager-app-test.glitch.me"},
  "user": {"id": "2HzoHm_hY0CjuEESY9tY6-3SdjmNHOoNqaPDcZGzsr0", "name": "helloandroid@gmail.com", "displayName": "helloandroid@gmail.com"},
  "pubKeyCredParams": [{"type": "public-key", "alg": -7}, {"type": "public-key", "alg": -257}],
  "timeout": 1800000,
  "attestation": "direct",
  "excludeCredentials": [],
  "authenticatorSelection": {
    "authenticatorAttachment": "platform",
    "requireResidentKey": true,
    "residentKey": "required",
    "userVerification": "required"
  },
  "extensions": {
    "credProps": true
  }
}
  • 将attestation从"none"改为"direct":让认证器返回包含自身元数据的证明语句,从中可以提取AAGUID。
  • 添加extensions.credProps: true:获取额外的认证器属性,辅助筛选。

2. 后端验证AAGUID

在后端处理凭证创建请求时,从返回的attestationObject中解析出AAGUID,只允许以下指定厂商的认证器:

  • Google Play Services认证器:adb88061-1801-4090-8547-50b85e887b36
  • Apple平台认证器:00000000-0000-0000-0000-000000000000(Apple不公开具体AAGUID,使用通用全0值)
  • Microsoft Windows Hello:f8a0114f-36e8-4d4b-9494-4beabb3c3c12

3. 前端显示说明

目前WebAuthn标准无法直接在前端隐藏第三方平台认证器的选项,但通过后端验证AAGUID,可以确保只有符合要求的认证器创建的凭证被系统接受,从而达到实际的限制效果。

内容的提问来源于stack exchange,提问作者Ильсур Ибрагимов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 16:23:21