Passkey认证报错:localhost与应用标识符未关联的解决方法
解决Passkey认证中应用与localhost:8080关联失败的问题
针对你遇到的AuthorizationError Code=1004(应用ID与localhost:8080未关联)错误,以下是逐一排查和修复的步骤:
1. 修正apple-app-site-association文件的webcredentials配置
你当前的webcredentials.apps字段仅填写了Bundle ID,但Apple要求此处必须是Team ID + Bundle ID的完整格式,示例格式为{TeamID}.{BundleID}:
- 查找Team ID:打开Xcode → 项目设置 → Signing & Capabilities → 查看当前Team对应的ID
- 修改后的
webcredentials片段示例:
"webcredentials": { "apps": ["ABC123XYZ.com.yourcompany.yourapp"] }
2. 调整iOS关联域配置
确保Xcode中Signing & Capabilities的Associated Domains字段格式正确:
- 需同时添加:
webcredentials:localhost:8080和webcredentials:localhost:8080?mode=developer(开发者模式需明确声明) - 注意:必须使用开发者账号签名项目,个人免费账号无法正常使用关联域功能
3. 修正Passkey代码中的Relying Party Identifier
ASAuthorizationPlatformPublicKeyProvider的relyingPartyIdentifier必须是不带端口的域名,Passkey规范中Relying Party ID不包含端口信息:
let publicKeyProvider = ASAuthorizationPlatformPublicKeyCredentialProvider( relyingPartyIdentifier: "localhost" // 替换原有的localhost:8080 )
4. 清除模拟器的关联域缓存
模拟器会缓存关联域数据,强制刷新可解决缓存导致的不匹配:
- 打开模拟器「设置」→「Safari浏览器」→「清除历史记录与网站数据」
- 或直接重置模拟器:菜单栏「Hardware」→「Erase All Content and Settings...」
- 确保模拟器已开启开发者模式:设置→隐私与安全性→开发者模式(开启后重启模拟器)
5. 验证HTTPS证书信任(针对localhost)
如果你的Vapor服务器使用自签名HTTPS证书:
- 将证书文件拖放至模拟器窗口,按提示完成安装
- 进入模拟器设置→通用→关于本机→证书信任设置,找到该证书并开启「信任」
完成以上步骤后,重新运行Vapor服务器和iOS项目,Passkey认证的关联问题即可解决。
内容的提问来源于stack exchange,提问作者Roland Lariotte
相关产品推荐
相关产品推荐

