在Chrome / Chromium中使用驻留密钥的WebAuthn,无需用户验证

cbwuti44  于 2023-04-03  发布在  Go
关注(0)|答案(1)|浏览(167)

我正在尝试使用驻留密钥/可发现凭据创建无用户名登录的凭据:

navigator.credentials.create({
  publicKey: {
    challenge: ...,
    timeout: ...,
    rp: { name: 'Some name' },
    user: { ... },
    pubKeyCredParams: [
      {"type":"public-key","alg":-7},
      {"type":"public-key","alg":-37},
      {"type":"public-key","alg":-257}]
    ],
    authenticatorSelection: {
      authenticatorAttachment: 'cross-platform',
      residentKey: 'required',
      requireResidentKey: true,
      userVerification: 'discouraged'
    }
  }
})

不幸的是,Chrome仍然提示用户设置PIN,或者如果硬件密钥不支持PIN,则告诉用户设备不受支持。就好像Chrome忽略了userVerification: 'discouraged'一样。
我们的要求是,用户可以注册和登录,而无需输入用户名或PIN(所有隐含的安全缺陷)。
有没有办法用Chrome来实现这一点?

jv4diomz

jv4diomz1#

应该可以使用

CredProtect=userVerificationOptional

参见https://groups.google.com/a/fidoalliance.org/g/fido-dev/c/_GlMmEpHya8https://developers.yubico.com/WebAuthn/WebAuthn_Developer_Guide/Resident_Keys.html
编辑:为了更精确,在create()选项中添加:

extensions: {
  credentialProtectionPolicy: "userVerificationOptional"
},

调用get()时,请确保指定:

userVerification: "discouraged"

相关问题