我正在尝试在我的网站上设置WebAuthn身份验证流程,但遇到了一个问题。我希望我的用户能够在主要网站(www.domain.com)上注册其设备,以便可以通过其用户设置轻松访问该设备。身份验证本身通过IdP(sso.domain.com)在不同的子域上进行。这是麻烦开始的地方。
我尝试了几件事:
如果我正确理解规范,则传递“ scoutswechel.be”实际上应该可以正常工作,因为两个域都是主域的子域(如果我在这里错了,请纠正我)。
我准备使用PHP进行挑战,并通过ajax调用将其传递给页面。例如,我的PHP脚本返回以下值:
{
"publicKey":{
"challenge":[105,107,101,103,105,49,119,115,98,108,119,109,48,109,105,53],
"user":{
"name":"walter",
"displayName":"Wouter Henderickx",
"id":[49,48,51]
},
"rp":{
"id":"scoutswechel.be",
"name":"scoutswechel.be"
},
"pubKeyCredParams":[
{
"alg":-7,
"type":"public-key"
}
],
"authenticatorSelection":{
"authenticatorAttachment":"cross-platform",
"requireResidentKey":false,
"userVerification":"preferred"
},
"attestation":null,
"timeout":60000,
"excludeCredentials":[],
"extensions":{
"exts":true
}
},
"b64challenge":"aWtlZ2kxd3NibHdtMG1pNQ"
}
然后我将Challenge和user.id转换为Uint8Array并将公钥部分传递给:
navigator.credentials.create({publicKey: key.publicKey}).
then(function (aNewCredentialInfo) {
do.stuff()
})
我应该怎么做?我可以将什么值传递给rp.id,以使其在两个子域中都能正常工作?
答案 0 :(得分:0)
最后,我弄清楚了。这些都是我的实现问题: