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

能否将IP地址设为Passkey依赖方ID用于测试场景?

关于用IP地址作为Passkey依赖方ID的测试方案

可以用IP地址作为依赖方ID进行测试,但需要满足浏览器的特定规则,先解决你遇到的报错问题:

报错原因

你碰到的DOMException: The relying party ID is not a registrable domain suffix of, nor equal to the current domain错误,本质是依赖方ID和当前访问地址不匹配,或者浏览器不认可当前环境下的IP作为合法依赖方ID。

可用IP作为依赖方ID的前提条件

  • 完全匹配访问地址的IP部分:如果你的应用访问地址是http://192.168.1.100:8080,依赖方ID必须设为192.168.1.100,不能带端口号、协议前缀(http/https)。
  • 区分IP类型与访问协议:
    • 私有局域网IP(如192.168.x.x、10.x.x.x):Chrome、Edge等主流浏览器允许在HTTP协议下使用这类IP作为依赖方ID;
    • 公网IP:必须使用HTTPS协议,否则浏览器会因安全限制拒绝,这是WebAuthn的核心安全要求。
  • 不能用回环地址(127.0.0.1、localhost)以外的特殊IP段,比如多播地址等。

配置示例

Spring Boot(Yubico库)

RelyingParty relyingParty = RelyingParty.builder()
    .id("192.168.1.100") // 替换为你的服务器IP
    .name("Passkey测试应用")
    .build();

Angular前端

const registrationOptions = {
  publicKey: {
    rp: {
      id: "192.168.1.100", // 与后端依赖方ID完全一致
      name: "Passkey测试应用"
    },
    user: {
      id: new Uint8Array(16), // 生成唯一用户ID
      name: "test-user",
      displayName: "测试用户"
    },
    challenge: new Uint8Array(32), // 后端生成的挑战值
    pubKeyCredParams: [{ type: "public-key", alg: -7 }]
  }
};

// 发起注册请求
navigator.credentials.create(registrationOptions)
  .then(credential => {
    // 将凭证发送到后端验证存储
  })
  .catch(err => console.error("注册失败:", err));

注意事项

  • IP作为依赖方ID仅适合测试场景,生产环境必须使用合法的注册域名,否则会影响Passkey跨设备同步、浏览器兼容性等核心功能;
  • 部分旧版本浏览器可能对IP作为依赖方ID的支持有限,建议使用最新版Chrome、Edge或Safari进行测试。

内容的提问来源于stack exchange,提问作者Ayan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:07:17