---
title: "Web3 身份验证指南"
description: "了解 Web3 身份验证基础知识,以及如何通过邮箱和社交登录构建现代化的链上流程。"
---

# Web3 身份验证指南

<ImageBlock
  src="https://media.alchemy.com/1761749240-a-guide-to-web3-authentication_1.png"
  alt="Web3 身份验证指南封面图，展示基于钱包的登录方式"
  width={1920}
  height={900}
  priority
/>

Web3 身份验证通过用户的公钥进行验证，而非传统的邮箱或密码。这种加密方式消除了中心化密码数据库，让用户真正拥有自己的数字凭证，但助记词、十六进制地址和密钥管理的复杂性给主流采用带来了很大障碍。近来在嵌入式钱包、账户抽象和智能合约账户方面的创新正在解决这些问题。

本指南介绍 Web3 身份验证的工作原理，探讨使其更易用的技术方案，并展示如何使用现代 Smart Wallets 基础设施实现可用于生产环境的身份验证。

## Web3 身份验证是如何工作的？

传统的 Web 身份验证依赖存储在中心化服务器上的凭证。用户输入用户名和密码，服务器核对数据库，凭证匹配则授予访问权限。这种模式要求用户信任服务提供商来保管其身份验证数据。

Web3 身份验证颠覆了这一模式。用户通过将 web3 钱包连接到应用来进行身份验证，通常方式是[对交易签名](https://thirdweb.com/learn/guides/web3-authentication-explained)。具体技术流程如下：

**1. 钱包连接**

当用户点击"Connect Wallet"时，应用会向用户的钱包软件（如 [MetaMask](https://www.alchemy.com/dapps/metamask)、Phantom 或 [Rainbow](https://www.alchemy.com/dapps/rainbow-wallet)）发起连接请求。此时的连接并不会授予任何权限，只是建立了一个通信通道。

**2. 生成挑战信息**

应用生成一条唯一的挑战信息，通常是一个随机数（nonce）或包含应用域名、时间戳和身份验证目的的格式化消息，用于防止重放攻击。

**3. 加密签名**

用户的钱包使用私钥对挑战信息进行签名。私钥需要保密，用于证明对应公钥的所有权。签名可以证明用户掌握与其钱包地址对应的私钥，而无需暴露私钥本身。

**4. 签名验证**

应用使用用户的公钥（钱包地址）验证签名。如果签名有效，应用确认该用户拥有该钱包地址并授予访问权限。这一验证过程可以在客户端完成，也可以在你的后端完成，取决于你的架构设计。

**5. 会话管理**

身份验证通过后，应用通常会为后续请求签发一个会话令牌，与传统 Web 会话类似，这样用户就不必为每个操作都重新签名。

这种加密基础在多个方面使该流程比基于密码的身份验证更安全：没有密码可以从数据库泄露中窃取；钓鱼攻击需要诱使用户签署恶意交易，这比窃取密码更容易被察觉；用户掌控自己的身份验证凭证，而不必信任中心化提供商。

## Web3 身份验证目前存在哪些问题？

尽管有着加密学上的优势，Web3 身份验证在用户体验上仍存在明显问题，限制了主流采用。理解这些问题，是构建能服务更广泛用户的解决方案的前提。

### 助记词如何影响用户体验？

Web3 要求用户设置钱包、管理私钥、保存助记词，往往还需要使用体验不佳的浏览器扩展或移动应用。助记词模式要求用户写下并妥善保管 12-24 个随机单词，这与主流用户的预期从根本上是不匹配的。

数据显示，[35% 的用户](https://metamask.io/news/metamask-embedded-wallets-frictionless-web3-onboarding-built-in)从未备份过钱包助记词，这使他们面临失去资金访问权的严重风险。这不是用户的失误，而是设计上的问题。多年来，我们已经习惯了可以通过邮箱找回密码。而对于加密货币钱包，助记词的运作方式不同：一旦丢失，就没有重置选项。这是一个在上手之前值得理解的关键区别。

### 为什么钱包的用户体验令人困惑？

在加密货币中进行签名的感受，就像在阅读用户许可协议，只不过取代法律术语的是十六进制代码和原始函数调用。当用户在钱包中点击"Sign"时，通常会看到：

- 十六进制格式的原始交易数据
- 以 Gwei 为单位的 gas 费估算
- 陌生的合约地址
- 类似 `approve\(address,uint256\)` 的函数调用

<ImageBlock
  src="https://media.alchemy.com/1761748417-group-2085662998.png"
  alt="钱包用户体验痛点插图：原始十六进制数据、gas 费用和令人困惑的交易提示"
  width={2160}
  height={910}
/>

用户缺乏足够的背景信息来判断这些交易是否合法。这种信息不对称造成了安全隐患：用户在不清楚自己在授权什么的情况下点击了"Confirm"。

### 用户面临哪些技术障碍？

用户在能够登录之前，就要面对多个区块链网络、十六进制地址和 gas 费等问题。想想这带来的认知负担：

- **网络选择**：应该使用 [Ethereum mainnet](https://www.alchemy.com/rpc/ethereum)、Polygon、Arbitrum、Base 还是 Optimism？
- **地址管理**：需要理解 `0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb` 代表自己的账户
- **Gas 费**：仅仅为了完成身份验证就需要持有原生代币（ETH、MATIC 等）
- **浏览器扩展**：需要安装和管理独立的钱包软件

以上每一项都是导致用户流失的摩擦点。

### 钱包碎片化如何影响用户？

许多 Web3 用户需要管理多个钱包，每个钱包都有各自的密钥和助记词，都需要单独保护。一个用户可能会有：

- 一个用于 Ethereum 和 EVM 链的钱包
- 一个独立的 [Solana wallet](https://www.alchemy.com/overviews/solana-wallets)
- 针对不同应用或使用场景的不同钱包
- 用于保管高价值资产的硬件钱包

管理这种碎片化状态，需要大多数用户并不具备的技术知识和自我管理能力。

### 当前的身份验证方式带来了哪些安全风险？

智能合约和 DeFi 平台是[黑客的常见目标](https://www.alchemy.com/overviews/top-5-security-strategies-for-defi-wallets-in-2025)，钓鱼攻击会诱骗用户泄露私钥。身份验证机制本身就会成为攻击面，具体表现为：

- **授权钓鱼**：用户在不知情的情况下签署了无限额的代币授权
- **域名伪装**：模仿正规应用的虚假网站
- **社会工程**：攻击者冒充客服骗取助记词
- **恶意合约**：用户与会盗取钱包资产的合约进行交互

私钥的安全性在 Web3 中至关重要，因为失去私钥的访问权限可能意味着失去自己的数字身份和资产。这营造出一种高风险环境，一次失误就可能造成灾难性后果。

## Web3 身份验证正在如何改进？

链上生态系统正通过多项技术创新积极应对这些挑战，在不牺牲安全性或去中心化的前提下大幅改善身份验证的用户体验。

<ImageBlock
  src="https://media.alchemy.com/1761748800-frame-1597879441-2.png"
  alt="现代链上用户体验插图：内嵌钱包、社交登录和 passkey"
  width={2160}
  height={910}
/>

### 什么是嵌入式钱包？

嵌入式钱包直接内置于 Web3 应用中，提供熟悉的登录体验，无需记忆和保管助记词。它不要求用户安装浏览器扩展或独立的钱包应用，而是将钱包功能直接集成到你的应用中。

使用嵌入式钱包，用户可以选择用 Google、Apple ID 或 X 账户登录，系统会在后台为其创建一个自托管钱包。这种方式带来以下几个关键好处：

**熟悉的身份验证流程**

用户使用已经熟悉的方式进行身份验证：邮箱、OAuth 或生物识别。钱包的创建和找回都通过用户熟悉的身份验证流程处理，用户无需直接理解或管理私钥。

**无需浏览器扩展**

钱包存在于你的应用环境中，用户不需要安装 MetaMask 或任何其他第三方软件。这消除了一个主要的上手障碍，也让你能够完全掌控身份验证体验。

**流畅的用户体验**

由于钱包嵌入在应用的界面中，你可以完全掌控外观、体验和流程，没有弹窗或跳转页面。身份验证过程与你现有的用户体验融为一体。

### 社交登录如何实现 Web3 访问？

社交登录集成利用现有的身份验证提供商，弥合了 Web2 与 Web3 之间的差距。其技术架构的运作方式如下：

**通过 MPC 拆分密钥**

TSS-MPC（多方计算门限签名方案）是一种加密方法，允许多方共同生成一个数字签名，通过在参与方之间分散签名权来提升安全性，同时不向任何单一一方透露私钥。

当用户使用 Google 登录时：

1. 你的应用通过 OAuth 对用户进行身份验证
1. 系统生成一个拆分到多方的私钥
1. 任何单一一方（包括你的应用）都无法获取完整密钥
1. 交易签名需要各方达到门限值的协作
1. 用户无需直接管理密钥即可实现自我托管

**Passkey 身份验证**

[Passkeys](https://www.alchemy.com/docs/wallets/react/login-methods/passkey-login) 是一种基于 WebAuthn 标准的无密码身份验证方式，设计目标是比传统密码更安全、更便捷。Passkeys 使用公钥加密技术，具体如下：

- 私钥保存在用户设备的安全隔区中（如 Apple 的 Secure Enclave 或 Android 的 Trusted Execution Environment）
- 公钥保存在你的身份验证服务器上
- 与传统密码不同（传统密码会造成摩擦并带来钓鱼风险），passkeys 利用了用户熟悉的模式：使用生物识别来安全地创建凭证并将其存储在设备上

这提供了强安全性（私钥永不离开设备）和熟悉的用户体验（FaceID 或 TouchID）。

### 什么是账户抽象，为什么它很重要？

账户抽象（ERC-4337）代表了链上账户运作方式的根本转变。使用账户抽象的智能合约钱包，创建的是由智能合约管理的钱包，而不是由单一私钥管理的钱包。

传统的 Ethereum 账户（外部拥有账户，即 EOA）由单一私钥控制。[智能合约账户](https://www.alchemy.com/docs/wallets/smart-contracts/choosing-a-smart-account)由代码控制，这使其能够实现更多功能：

**Gas 赞助**

有了账户抽象，用户的钱包或账户变得可编程，使开发者能够代表用户赞助 gas 费。这意味着：

- 用户无需持有 ETH 即可与你的应用交互
- 你可以赞助上手流程中的交易以减少摩擦
- 用户可以用[稳定币](https://www.alchemy.com/dapps/top/stablecoins)或其他 ERC-20 代币支付 gas 费
- 你可以设定具体策略来决定赞助哪些交易

**批量交易**

作为可编程的智能账户，交易可以被打包批量执行，这极大简化了用户体验并降低了延迟。用户可以：

- 在一次交易中完成代币授权和兑换
- 原子化地铸造 NFT 并将其挂单出售
- 无需多次钱包确认即可执行多步骤的 DeFi 策略

**社交找回**

智能合约账户可以实现不依赖助记词的找回机制：

- 指定可以帮助找回账户的可信联系人
- 使用基于邮箱或手机号的找回流程
- 实现有时间锁定的账户找回流程

**可编程安全**

由于账户本身就是智能合约，你可以实现自定义逻辑：

- 高价值交易的多重签名要求
- 每日或每笔交易的支出限额
- 用于自动批准的白名单地址
- 特定操作的时间限制

Ethereum 的联合创始人 Vitalik 认为，从 EOA 向 Smart Wallets 的[转变](https://vitalik.eth.limo/general/2023/06/09/three_transitions.html)是让主流用户进入链上世界的必要条件。账户抽象不是一个锦上添花的功能——它是实现主流采用的基础设施。

### Passkeys 如何提升身份验证的安全性？

[Passkeys](https://www.alchemy.com/docs/wallets/react/login-methods/passkey-login) 自带多项安全优势。具体来说，与密码或口令不同，用户使用 passkey 时不需要记住任何信息，也无法从用户那里通过钓鱼手段获取这些信息。

其安全模型运作方式如下：

**设备绑定的凭证**

私钥在设备的安全硬件中生成并保存（可信平台模块、Secure Enclave 等），永不离开设备，从而消除了通过网络攻击窃取密钥的风险。

**抗钓鱼能力**

由于 passkeys 与创建它们的域名绑定，无法在钓鱼网站上使用。即使用户被诱骗访问了虚假网站，由于域名不匹配，passkey 也无法生效。

**无共享密钥**

与在用户和服务器之间共享的密码不同，passkeys 使用非对称加密。服务器只保存公钥，即便数据库被攻破，公钥对攻击者也毫无用处。

**生物识别身份验证**

此外，由于 passkeys 与你的 iCloud 或 Google 账户绑定，它们受到 Apple 和 Google 安全体系的保护。这提供了：

- 默认的多因素身份验证（持有设备 + 生物识别）
- 抵御 SIM 卡劫持攻击的保护
- 跨设备的备份与同步

## 有哪些开发者解决方案能简化 Web3 身份验证？

多家服务商提供简化 Web3 身份验证实现的基础设施。以下是关于这一领域的概况。

### 有哪些第三方身份验证服务商？

**Web3Auth**

一套简单的非托管身份验证基础设施，让 Web3 钱包和应用能够为主流用户和 Web3 原生用户提供无缝登录体验。[Web3Auth](https://web3auth.io/) 支持社交登录、邮箱身份验证，并与多个钱包提供商集成。

**Magic**

提供基于邮箱的钱包创建，使用多方计算进行密钥管理。Magic 处理密钥拆分和找回的复杂性，同时为开发者提供简单的 API。

**Dynamic**

提供非托管的嵌入式钱包，支持社交登录和账户抽象集成。[Dynamic](https://www.dynamic.xyz/) 既提供嵌入式钱包，也支持外部钱包连接。

**Privy**

为 EVM、Solana、Bitcoin 等链上的任意用户提供硬件加密、符合 SOC 2 标准的钱包。[Privy](https://www.privy.io/) 专注于结合企业级安全性的流畅登录体验，支持 passkey 和硬件令牌。

### Alchemy 的智能钱包基础设施是如何工作的？

我们构建 Smart Wallets 是为了提供垂直整合的钱包与交易基础设施。你无需拼凑多个服务，只需一个 SDK，就能获得实现生产级身份验证所需的一切。

**用于零摩擦上手的嵌入式钱包**

Smart Wallets 让你可以构建体验上像 Web2、底层却完全是 Web3 的产品。具体来说：

用户可以通过以下方式注册：

- 邮箱身份验证
- 社交登录（Google、Apple、Twitter）
- Passkeys（FaceID、TouchID）
- 自定义身份验证（使用你自己的身份验证方式）
- 面向加密原生用户的传统钱包连接

实现方式很直接。[这里有一份指南](https://www.alchemy.com/docs/wallets/authentication/login-methods/email-otp)可以帮助你上手。

**创建智能合约账户**

身份验证通过后，你可以为用户创建一个[智能合约账户](https://www.alchemy.com/docs/wallets/smart-contracts/choosing-a-smart-account)。我们所有的智能合约账户都经过 [Quantstamp](https://www.alchemy.com/dapps/quantstamp) 审计，并在生产环境中经历了超过 3.8 亿笔交易的实战检验：

智能合约账户提供账户抽象的所有优势——gas 赞助、批量交易和可编程安全。

**Gas 赞助配置**

通过可编程策略[赞助 gas](https://www.alchemy.com/docs/wallets/transactions/sponsor-gas)，你可以精确控制赞助哪些交易，并且可以用任意 ERC-20 代币来实现。

在我们的控制台中设置策略：

- 针对单个钱包或全局的支出限额
- 特定地址的白名单/黑名单
- 赞助特定的合约交互
- 设置每日/每月的支出上限

**多链支持**

Smart Wallets 已支持包括 Ethereum、Polygon、Base、Optimism、Arbitrum 在内的 30 多条链。只需编写一次身份验证逻辑，即可跨多条链部署。

**生产级基础设施**

构建于 Alchemy 一流、可靠的基础设施之上，确保智能合约钱包的原语始终可供用户使用。我们提供：

- 99.99% 正常运行时间 SLA
- 亚秒级响应速度
- 自动扩容
- 面向企业客户的 24/7 支持

Alchemy Smart Wallets 已支撑超过 3800 亿笔交易，是使用量第一的智能钱包，为从小型创业公司到大型企业的各类应用提供支持。

## 应该如何实现 Web3 身份验证？

基于为数千个应用构建身份验证的经验，以下是在生产环境中行之有效的模式。

### 应该以社交登录还是钱包连接为起点？

面向主流用户的应用，应从社交登录入手。面向加密原生用户的应用，两者都应支持。

- **社交登录优先模式：** 这种方式能最大化不持有[加密钱包](https://www.alchemy.com/dapps/top/wallets)的新用户的转化率。之后可以为想要完全掌控钱包的用户增加"导出到 MetaMask"功能。
- **钱包连接优先模式：** 这适用于 DeFi 应用、NFT 交易市场等用户很可能已经拥有钱包的应用。

### 应该如何处理 gas 费？

不要要求用户在使用你的应用前先购买 ETH。通过赞助 gas，让用户无需 ETH 即可免费试用你的应用。根据你的商业模式配置赞助策略：

**免费增值模式：**

- 为每个用户赞助前 N 笔交易
- 超出免费额度后要求付费或质押
- 监控每个钱包的支出以防止滥用

**订阅模式：**

- 为付费订阅用户赞助全部 gas
- 限制免费用户的赞助额度

**基于交易的模式：**

- 对每笔交易收取费用
- 将 gas 赞助作为交易成本的一部分

设置全局支出限额，在保证流畅体验的同时控制成本。

### 应该使用交易批处理吗？

应该使用，只要用户需要多个操作才能完成一个流程。数组中的交易会按其出现顺序依次执行，这样你就可以：

**改善用户体验：**

- 一次确认代替多次钱包弹窗
- 原子化执行（所有操作要么全部成功，要么全部失败）
- 更低的总 gas 成本

**常见模式：**

- 授权 + 兑换：让用户一键完成授权并执行兑换
- 铸造 + 挂单：原子化地创建并挂单出售 NFT
- 多代币操作：在一笔交易中与多个合约交互

### 应该如何处理移动端用户？

Dynamic 投入大量精力优化移动端流程，利用 passkeys 实现便捷的 FaceID 和 TouchID 登录及钱包创建。移动优先的身份验证至关重要，原因在于：

- 大多数用户是通过移动设备访问应用的
- 生物识别在移动端更易实现
- 移动钱包应用（MetaMask Mobile、Rainbow）需要深层链接

**移动端最佳实践：**

1. **优先使用 passkeys：** FaceID 和 TouchID 能提供最佳的移动端体验
1. **支持 [WalletConnect](https://www.alchemy.com/dapps/walletconnect)：** 服务于使用移动钱包应用的用户
1. **测试深层链接：** 确保与钱包应用之间的顺畅衔接
1. **为小屏幕设计：** 身份验证界面应适配 320px 视口
1. **减少跳转：** 尽可能让用户保持在你的应用环境中

### 渐进式披露呢？

不要用高级功能让新用户不知所措。先设计好自己的结账流程，初期在后台完成交易签名，之后再逐步开放更多控制权。

**阶段一：隐形钱包**

- 仅社交登录
- 所有交易自动签名
- 不显示任何钱包相关术语
- 完全赞助 gas

**阶段二：基础控制**

- 显示交易确认
- 让用户查看自己的钱包地址
- 显示交易历史
- 解释 gas 赞助机制

**阶段三：高级功能**

- 允许导出到外部钱包
- 显示高级交易详情
- 支持手动支付 gas
- 支持硬件钱包签名

这种方式能在为高级用户提供控制权的同时，最大化转化率。

## Web3 身份验证的未来会是什么样子？

链上身份验证的发展方向很明确：默认隐形，需要时强大可控。

### 智能账户会取代 EOA 吗？

Ethereum 的联合创始人 Vitalik 认为，从 EOA 向 Smart Wallets 的转变是让主流用户进入链上世界的必要条件。这不是猜测——这是技术路线图。

Smart Wallets 提供：

- 通过可编程权限实现更好的安全性
- 通过 gas 抽象和批处理实现更优的用户体验
- 无需助记词的账户找回
- 跨链互操作性

生态系统正朝着以智能钱包为默认选项的方向发展。出于向后兼容的考虑，EOA 仍会继续受到支持，但新应用应当建立在智能钱包基础设施之上。

### 链抽象将如何影响身份验证？

链抽象通过让用户一次性完成注册来解决问题，无需密钥、找回短语或多个钱包。用户不应该需要知道自己正在使用哪条链。

未来的身份验证将会：

- 在所有链上使用同一个账户地址
- 抽象掉链的具体细节
- 自动将交易路由到最优链
- 透明地处理跨链操作

这需要钱包提供商、跨链桥和应用之间的协调配合，但相关技术基础目前正在建设中。

### 生物识别身份验证会成为标准吗？

用户可以通过 Face ID 或 Touch ID 的生物识别方式生成一个自托管钱包。Passkeys 已经获得 Apple、Google 和 Microsoft 的支持，采用速度正在加快。

预计在未来 2-3 年内：

- Passkeys 会成为默认的身份验证方式
- 助记词只面向有此需求的高级用户
- 生物识别身份验证覆盖所有设备
- 通过 iCloud/Google 账户实现无缝同步

### AI 将扮演什么角色？

[AI 代理](https://www.alchemy.com/dapps/best/ai-agents)能将混乱的 DeFi 复杂操作转化为流畅、对人类友好的金融体验，让加密货币不仅仅是技术上可行，而是真正好用。AI 将通过以下方式影响身份验证：

**交易意图解析：**

- 用户用自然语言描述想要执行的操作
- AI 生成相应的交易
- 用户只需简单确认即可批准

**欺诈检测：**

- AI 分析交易模式以发现异常
- 在用户批准可疑交易前发出警告
- 从以往的攻击中学习以防范新的攻击

**个性化安全：**

- 基于风险等级的自适应身份验证
- AI 推荐的安全设置
- 自动化的安全监控

## 今天就可以开始构建了

Web3 的愿景与其实际用户体验之间的差距正在迅速缩小。现代身份验证基础设施使得在不牺牲去中心化或安全性的前提下，让主流用户顺利上手成为可能。

我们构建 Smart Wallets 正是为了让每一位开发者都能获得这种能力。你将获得：

- 支持社交登录和 passkeys 的**嵌入式钱包**
- 支持 gas 赞助和批处理的**智能账户**
- 拥有 99.99% 正常运行时间的**企业级基础设施**
- 覆盖 EVM 和 Solana 的**多链支持**

数以千计的开发者正在使用我们的基础设施，为数百万用户提供上手服务。身份验证的未来，不在于教会用户区块链是如何运作的，而在于构建足够直观的系统，让用户无需思考底层技术。

准备好实现现代 Web3 身份验证了吗？[注册](https://dashboard.alchemy.com/)开发者账户，通过[文档](https://www.alchemy.com/docs/wallets/react/quickstart)开始上手，或联系我们获取更多信息或集成帮助。

## 常见问题

### 为我的应用添加基于钱包的身份验证需要哪些基本步骤？

集成一个钱包连接流程，让用户对一条唯一消息进行签名，在你的后端验证该签名，然后创建一个会话令牌，使用户保持登录状态，无需为每个请求重新签名。

### 对消息签名如何证明用户拥有该钱包？

应用发送一条挑战消息，只有持有该钱包私钥的人才能对其签名；随后应用使用钱包的公开地址验证签名，以确认用户掌控该地址。

### Web3 身份验证应该使用社交登录、钱包登录，还是两者都用？

面向主流用户群体时，应从社交登录入手，可选择在后台创建钱包；而面向加密原生用户的应用通常优先考虑直接的钱包连接，并可能将社交登录作为备选方案。

### 用户通过钱包完成身份验证后，我应该如何管理会话？

在验证签名消息后，为后续的 API 请求签发一个会话令牌或 cookie，类似于传统的 Web 会话，这样用户就不需要为每个操作都重新签名。

### 什么是嵌入式钱包，它们如何改善身份验证？

嵌入式钱包直接内置于应用中，让用户可以使用 Google 或 Apple ID 等熟悉的方式进行身份验证，同时在后台创建一个自托管钱包。这消除了对浏览器扩展或助记词管理的需求。

### Passkeys 如何让 Web3 身份验证更安全？

Passkeys 使用存储在安全硬件中、永不离开设备的设备绑定凭证，能够抵御钓鱼攻击，并在不与服务器共享密钥的情况下提供生物识别身份验证。

### 什么是账户抽象，它对身份验证为何重要？

账户抽象支持智能合约账户，可以赞助 gas 费、批量处理交易，并实现诸如社交找回等可编程安全功能，消除了许多阻碍主流采用的障碍。

### 我应该为用户身份验证赞助 gas 费吗？

应该，赞助 gas 费消除了不持有加密货币的新用户面临的一个主要障碍，使他们无需先购买 ETH 就能试用你的应用。
