我正在 iOS 版 React Native 中实现一个简单的 PoC 应用程序,并尝试使用 react-native-passkey 库来证明一个身份验证器,但是,我正在努力验证证明响应......
我正在 iOS 版 React Native 中实现一个简单的 PoC 应用程序,并尝试使用 react-native-passkey
库来证明身份验证器,但是,我很难验证从客户端到 Nest.JS 服务器的证明响应,该服务器利用 @simplewebauthn/server
依赖项来生成响应。问题似乎是提供的 clientDataJSON 质询字段与服务器上生成的字段不匹配。
以下是我提出的挑战:
i-1E5Fhg0so0Xd3CInFzHG7EVQfWqazTgf-m26flrsQ
下面是我通过首先将 base64 字符串转换为 utf8 字符串并通过以下方式解析提取的客户端数据挑战 JSON.parse
:
{
type: 'webauthn.create',
challenge: 'aS0xRTVGaGcwc28wWGQzQ0luRnpIRzdFVlFmV3FhelRnZi1tMjZmbHJzUQ',
origin: <redacted>
}
来源是故意删减的。这是我的 EC2 实例使用的有效域,并且具有正确证明/断言流程所需的所有端点。
规范 中看到 ,Apple 在签名之前会在挑战中注入某种客户端数据哈希。我不确定这些规范细节如何理解,因为它们太高科技了,我这个笨蛋根本无法理解。
所以,我的问题是,我需要将哪些字节连接到我的挑战中才能使其看起来与我的 iOS 应用程序返回的字节相同?
我尝试获取服务器上的一个端点,将该信息发送给 iOS 身份验证器,并将其响应返回给服务器。我预计客户端数据中返回的质询与服务器生成的质询相匹配。