iOS 上的离子电容器密钥 WebAuthn

问题描述 投票:0回答:1

我正在使用 Ionic 框架构建一个应用程序,并且我正在尝试使用密钥让用户能够无密码注册和使用该应用程序。我已经能够在浏览器和 Android 上使用密钥,但无法在 iOS 上实现此目的,并出现错误消息“WebAuthn 未在 ios 上实现”。我正在使用 Capacitor 5,在 iOS 16 的 iOS 设备上进行了测试。我使用的是来自 https://www.npmjs.com/package/@joyid/capacitor-native-passkey

的包

enter image description here

我的代码如下:

import { WebAuthn as IOSWebAuthn } from '@joyid/capacitor-native-passkey';

export class Mypage {

  async passkeyRegister() {
    const resp = await this.utilService.get('req_register_passkey_otp');
    // Get the challenge from server

    try {
      // pass the challenge to Webauthn to get keys
      // always get error that is not implemented on ios
      attResp = await IOSWebAuthn.create(resp.data.passkeyRegOption);
    } catch (error) {
    }
}

我还添加了 Web 凭据并设置了域关联,如此处配置中所述:https://github.com/f-23/react-native-passkey。我怎样才能让密钥在 iOS 上工作?预先感谢您。

ios ionic-framework capacitor ionic5 passkey
1个回答
0
投票

这可能有点晚了,但您链接的包实际上并没有成为 Android 或 iOS 的桥梁以使用本机密钥。简而言之,在 iOS 上它不起作用,因为 ionic 使用 WKWebView,而不是 SFSafariViewController 或 ASWebAuthenticationSession,并且 navigator.credentials 仅在后两者中可用。有一些解决方法,但它们都有点hacky。 我建议找到一个不同的包,我个人分叉了https://github.com/lyokato/WebAuthnKit-iOS(他也有一个android版本)并使其工作。

© www.soinside.com 2019 - 2024. All rights reserved.