我想问一个关于id
和的问题rawId
。
在实施 webauthn 时,在身份验证器证明响应中,我看到我们同时拥有id
和rawId
. 阅读规范(https://www.w3.org/TR/webauthn-1/#dom-publickeycredential-rawid),id
是base64url(rawId)
{
"type": "public-key",
"id": "AV1--2gCLXLF9_5bGWDwZn6FP_OqAWfKY74mckatWMgN65o5OW8q2k9XVbYl8kAqPtpEoBlM0opKEjwDqYRBDIYbAl058O8ZQWS-r0M0L-9ikcu3tKuMxfFnRZ9gU6tnDH6QqzYwUg",
"rawId": "AV1--2gCLXLF9_5bGWDwZn6FP_OqAWfKY74mckatWMgN65o5OW8q2k9XVbYl8kAqPtpEoBlM0opKEjwDqYRBDIYbAl058O8ZQWS-r0M0L-9ikcu3tKuMxfFnRZ9gU6tnDH6QqzYwUg",
"response": {
...
}
...
}
所以这是我的问题:
- 为什么我们需要
id
- 为什么在上面的例子中,我
id
的完全一样rawId
?- 它总是一样吗?
id
如果是这样,我们可以在响应中摆脱吗?
- 它总是一样吗?
- 如果我将公钥保存
id
到数据库(稍后使用该公钥id
创建allowCredentials
列表),我应该遵循以下哪一个?- 保存
id
在数据库中,用于id
创建allowCredentials列表 - 保存
base64url(rawId)
在数据库中,然后使用该 base64 url 编码值创建allowCredentials
列表
- 保存