iOS端WebAuthn认证时Challenge不匹配问题求助
iOS React Native Passkey验证问题:客户端Challenge与服务器不匹配
我正在为iOS开发React Native简易PoC应用,使用react-native-passkey库实现验证器认证,但在通过依赖@simplewebauthn/server的Nest.JS服务器验证客户端认证响应时遇到问题:客户端返回的clientDataJSON中challenge字段与服务器生成的不匹配。
服务器生成的challenge为:
i-1E5Fhg0so0Xd3CInFzHG7EVQfWqazTgf-m26flrsQ
将客户端返回的base64字符串转UTF8并经JSON.parse解析后得到的client data为:
{ type: 'webauthn.create', challenge: 'aS0xRTVGaGcwc28wWGQzQ0luRnpIRzdFVlFmV3FhelRnZi1tMjZmbHJzUQ', origin: <已脱敏> }
origin是EC2实例使用的有效域名,具备认证/断言流程所需的全部端点。我查阅W3C规范得知Apple会在签名前向challenge注入客户端数据哈希,但搞不懂具体细节。想请教下,需要将哪些字节与服务器生成的challenge拼接,才能和iOS应用返回的challenge一致?我原本以为客户端返回的challenge会和服务器生成的完全一致。另外,关于断言签名验证的问题,我已经发布了新的提问。
内容的提问来源于stack exchange,提问作者user26530591
相关产品推荐
相关产品推荐

