微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法从webauthnChrome + Android获取凭据

如何解决无法从webauthnChrome + Android获取凭据

我正在尝试为Web应用程序设置webauthn凭据登录。我正在最后一个Android(Pixel 2)和最新的Android版Chrome上进行测试。

我可以使用功能navigator.credentials.create({publicKey})创建和发送凭证对象。密钥是使用内部指纹传感器或更好的android-safetynet创建的。

当我想通过navigator.credentials.get({publicKey})获取此密钥时,总是会收到错误消息:“ NotAllowedError:该操作超时或不允许。请参见:https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client."我发现没有什么用处到目前为止的错误

捕获错误代码示例:

const base64Id = 'Ej_1cfBcad6TVO1choHVQl';
const bufferId = Buffer.from(base64Id,'base64');

const randomChallenge = crypto.randomBytes(32);
const bufferChallenge = Buffer.from(randomChallenge,'base64');

const options = {
  challenge: bufferChallenge,timeout: 60000,allowCredentials: [
    {
      transports: ['internal'],type: 'public-key',id: bufferId
    },],};

navigator.credentials
  .get({ publicKey: options })
  .then((credentialInfoAssertion) => {
    alert(credentialInfoAssertion.toString());
  })
  .catch((err) => {
    alert(err.toString());
  });

错误调用获取凭据结果,预期结果就是获取凭据(例如我从.create方法获取的凭据)。

我使用webauthn测试了一些演示站点,并且该站点可以正常工作,因此浏览器支持没有问题。

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。