各种设置的WebAuthn中继方ID



我有一个Angular 11项目,它实现了WebAuthn注册。后端是SpringBoot 2.4

WebAuthn Login应该在项目的两个部分工作,"main"而"观看者"域设置相当复杂:

主要项目<<p>url/em>
  • 本地:https://localhost: 4202
  • 暂存:https://company.com(本地Kubernetes服务器)
  • 刺激:https://company-project.com

查看器项目<<p>url/em>
  • 本地:https://localhost: 4200
  • 暂存:https://viewer.develop.plattform.intra.company.com(本地Kubernetes服务器)
  • 刺激:https://viewer.company-project.com

代码environment.ts

prodUrls: ['company-project.com'],
webauthn: {
name: "Company DEV",
rpId: "localhost"
}

environment.prod。Ts(在构建中替换)

prodUrls: ['company-project.com'],
webauthn: {
name: "Company Prod",
rpId: "plattform.intra.company.com" // gets overridden by values in "prodUrls"
}

webauthn.service.ts

private _getRelyingPartyInfo(): RelyingParty {
let rpId = environment.webauthn.rpId;
/**
* Check if the Hostname matches one of our Prod Hostnames
* and use this instead
*/
environment.prodUrls.forEach((url, index) => {
if (location.hostname.indexOf(url) > -1) {
rpId = environment.prodUrls[index];
}
});
const rp = {
id: rpId,
name: environment.webauthn.name
};
return rp;
}

的问题
  • 它在本地工作,使用rpIdlocalhost(本地后端和前端)
  • 它不工作在分期——>后端抛出

WebAuthnException message: rpIdHash doesn't match preconfigured rpId.

  • 应该在使用company-project.com作为rpId的Prod上工作(害怕部署,因为它不能在staging上工作)

What I tried

对于staging,我将rpId更改为develop.plattform.intra.company.com,我可以在"main"中注册和登录。登录"查看器";也抛出错误

规范没有非常具体地说明什么应该工作:https://www.w3.org/TR/webauthn/#relying-party-identifier,它只说什么不应该工作。我想,多个子域会使分级变得复杂吗?

分级的正确rpId是什么?company-project.com作为rpId应该在产品上工作的假设是否正确?

对于分期,我将rpId更改为develop.plattform.intr.company.com,我可以在"main"注册和登录。登录"查看器";也抛出错误

得到断言的代码是什么?你可能还会遇到另一个问题。需要将get断言RP ID设置为与注册时使用的RP ID相同。如果你不这样做,它将默认为原点,这对于你的子域将是不同的。

相关内容

  • 没有找到相关文章

最新更新