---
url: 'https://www.corbado.com/zh/faq/webview-passkey-mobile-app-challenges'
title: '为什么移动应用中的 WebView 对 Passkey 构成挑战？'
description: '了解为什么移动应用中的 WebView 对 Passkey 构成挑战，以及如何在实施过程中解决这些问题。'
lang: 'zh'
keywords: 'WebView Passkey 挑战, 移动应用 Passkey, WebAuthn WebView, WebView 中的 Passkey 限制, Passkey 移动端适配'
---

# 为什么移动应用中的 WebView 对 Passkey 构成挑战？

## 为什么移动应用中的 WebView 对 Passkey 构成挑战？

[WebView](https://www.corbado.com/blog/native-app-passkeys)
常用于在移动应用中渲染网页内容，但在实现 Passkey 时，它们会带来一些独特的挑战。这些挑战主要源于许多
[WebView](https://www.corbado.com/blog/native-app-passkeys) 环境对 WebAuthn 功能的支持十分有限。

## WebView 带来的主要 Passkey 挑战

### 1. 对 WebAuthn 的支持有限

- 许多 [WebView](https://www.corbado.com/blog/native-app-passkeys) 缺乏对 WebAuthn
  API 的全面支持，导致很难启用 Passkey 功能。
- 像 Chrome 或 Safari 这样的原生浏览器通常比 WebView 更具备使用 Passkey 的条件。作为替代方案，我们可以直接在
  [iOS](https://www.corbado.com/blog/how-to-enable-passkeys-ios) 或
  [Android](https://www.corbado.com/blog/how-to-enable-passkeys-android) 应用中原生实现 Passkey。

### 2. 实现方式不一致

WebView 功能因平台和版本而异：

- [iOS](https://www.corbado.com/blog/how-to-enable-passkeys-ios) 上的 **WKWebView**
  提供了更好的支持，但可能仍然缺乏关键的 WebAuthn 功能。
- [Android](https://www.corbado.com/blog/how-to-enable-passkeys-android)
  的 WebView 实现通常不太一致，可能需要进行自定义配置。

### 3. 安全限制

- WebView 通常处于受限环境中，限制了对本地身份验证器 (Authenticator) 的访问，比如
  [Face ID](https://www.corbado.com/faq/is-face-id-passkey)、Touch ID 或
  [Android](https://www.corbado.com/blog/how-to-enable-passkeys-android) 的同等生物识别技术。
- 这会阻碍在应用内无缝创建或使用 Passkey。

### 4. 用户体验问题

如果 Passkey 无法在 WebView 中正常使用，用户可能需要切换到外部浏览器或其他应用进行身份验证，这会打断登录流程。通常来说，使用各自
[iOS](https://www.corbado.com/blog/how-to-enable-passkeys-ios)
或 Android 应用开发框架（如 Kotlin、Swift）原生实现 Passkey，才能获得最佳的 Passkey 用户体验。

## 应对 WebView 挑战的策略

1. **测试 WebView 兼容性：**
    - 利用 [State of Passkeys](https://state-of-passkeys.io)
      的数据来了解 WebView 的局限性。
    - 评估应用中使用的特定 WebView 类型（例如 [WKWebView](https://www.corbado.com/blog/native-app-passkeys)
      与 Android WebView）。

2. **提供后备方案：**
    - 如果 WebView 支持不足，请将用户重定向到原生浏览器进行身份验证。
    - 在过渡阶段保留备用的多因素身份验证 (MFA) 方法。

3. **鼓励原生实现：**
   只要条件允许，尽量使用原生应用组件来实现 Passkey 功能，而不是依赖 WebView。

4. **与供应商合作：**
   与 WebView 和平台提供商合作，推动在未来的更新中提供更好的 WebAuthn 支持。

## 总结

由于对 WebAuthn 的支持有限且存在安全限制，WebView 对 Passkey 构成了不小的挑战。通过了解这些局限性，并采用提供后备方案和使用原生应用组件等策略，我们可以确保更顺畅地推出 Passkey。

## 阅读完整文章
