更新记录

1.0.0(2025-08-26) 下载此版本

init


平台兼容性

Passkeys 通行密钥登录(uni-app API 插件)

基于 WebAuthn / Passkeys 标准的跨平台登录插件。
开发者只需传入后端返回的 options,插件自动处理二进制转换、调用系统 UI(指纹/FaceID),并返回一个 payload,可直接提交给后端进行验证。

✨ 功能亮点

  • 🚀 极简 API:输入后端 options → 输出 payload → 回传后端
  • 🔒 高安全性:本地私钥签名,后端只保存公钥
  • 🌍 跨平台:支持 H5(WebAuthn),未来支持 Android/iOS(UTS 原生能力)
  • 🎯 开发者无感:无需关心 base64url、ArrayBuffer 等复杂逻辑

📦 安装

将插件导入到你的 uni-app 项目中,并在代码中引入:

import { createRegistrationRequest, createAuthenticationRequest } from '@/uni_modules/pass-keys';

🚀 使用方法

1. 注册(Register)

// 1. 向后端请求注册 options
const { options, userId } = await api.post('/passkeys/register/options', { username });

// 2. 调用插件,传入 options,得到注册 payload
const payload = await createRegistrationRequest(options);

// 3. 将 payload 回传后端进行验证
await api.post('/passkeys/register/verify', { userId, response: payload });

返回结果示例:

{ "ok": true }

2. 登录(Login)

// 1. 向后端请求登录 options
const { options, userId } = await api.post('/passkeys/login/options', { username });

// 2. 调用插件,传入 options,得到登录 payload
const payload = await createAuthenticationRequest(options, { conditional: true });

// 3. 将 payload 回传后端验证,并获取 token
const { token } = await api.post('/passkeys/login/verify', { userId, response: payload });

返回结果示例:

{ "verified": true, "token": "eyJhbGciOi..." }

📘 API 说明

createRegistrationRequest(options)

  • 参数:后端返回的注册 options(含 challengeuser.id,为 base64url 字符串)
  • 返回:可直接传给 /register/verify 的 payload
{
  id: string;
  rawId: string;
  type: 'public-key';
  response: {
    clientDataJSON: string;
    attestationObject: string;
  }
}

createAuthenticationRequest(options, opts?)

  • 参数:后端返回的登录 options(含 challengeallowCredentials
  • opts.conditional:是否启用“免用户名自动弹窗”模式(Chrome ≥ 108 支持)
  • 返回:可直接传给 /login/verify 的 payload
{
  id: string;
  rawId: string;
  type: 'public-key';
  response: {
    clientDataJSON: string;
    authenticatorData: string;
    signature: string;
    userHandle: string | null;
  }
}

⚠️ 注意事项

  1. 必须运行在 HTTPSlocalhost 环境下。
  2. iOS 需开启 iCloud 钥匙串 才能使用 Passkeys。
  3. 小程序不支持 WebAuthn,本插件仅支持 H5 / App。
  4. App 端原生支持(Android/iOS)将在后续版本提供。

🗂️ 版本计划

  • v0.1.x:支持 H5 (WebAuthn)
  • v0.2.x:支持 Android/iOS 原生能力(UTS API 插件)
  • v0.3.x:提供完整 Demo 项目 & TypeScript 类型增强

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。