#tauri-plugin #hardware #freebsd #openbsd #platform #authenticator #macos

sys tauri-plugin-authenticator

在您的 Tauri 应用中使用硬件安全密钥

19 个版本

2.0.0-rc.02024 年 8 月 2 日
2.0.0-beta.102024 年 7 月 31 日
2.0.0-beta.72024 年 5 月 30 日
2.0.0-beta.32024 年 3 月 21 日
2.0.0-alpha.02023 年 5 月 24 日

#66身份验证

Download history 37/week @ 2024-04-19 104/week @ 2024-04-26 19/week @ 2024-05-03 219/week @ 2024-05-24 72/week @ 2024-05-31 9/week @ 2024-06-07 2/week @ 2024-06-14 131/week @ 2024-06-28 13/week @ 2024-07-05 85/week @ 2024-07-12 8/week @ 2024-07-19 151/week @ 2024-07-26 125/week @ 2024-08-02

每月 369 次下载

Apache-2.0 OR MIT

67KB
891

plugin-authenticator

在您的 Tauri 应用中使用硬件安全密钥。

  • 支持的平台:Windows、Linux、FreeBSD、NetBSD、OpenBSD 和 macOS。

安装

此插件需要至少 Rust 版本 1.75

我们推荐三种通用的安装方法。

  1. 使用 crates.io 和 npm(最简单,需要您信任我们的发布流程)
  2. 直接从 Github 使用 git 标签/修订哈希拉取源代码(最安全)
  3. 使用 Git 子模块在此 tauri 项目中安装此仓库,然后使用文件协议导入源代码(最安全,但使用不便)

通过以下行将 authenticator 插件安装到您的 Cargo.toml 文件中

src-tauri/Cargo.toml

# you can add the dependencies on the `[dependencies]` section if you do not target mobile
[target."cfg(not(any(target_os = \"android\", target_os = \"ios\")))".dependencies]
tauri-plugin-authenticator = "2.0.0-rc"
# alternatively with Git:
tauri-plugin-authenticator = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }

您可以使用您首选的 JavaScript 包管理器安装 JavaScript Guest 绑定

注意:由于大多数 JavaScript 包管理器无法从 git monorepos 安装包,我们为每个插件提供了只读镜像。这使得安装选项 2 更易于使用。

pnpm add @tauri-apps/plugin-authenticator
# or
npm add @tauri-apps/plugin-authenticator
# or
yarn add @tauri-apps/plugin-authenticator

或者使用 Git

pnpm add https://github.com/tauri-apps/tauri-plugin-authenticator#v2
# or
npm add https://github.com/tauri-apps/tauri-plugin-authenticator#v2
# or
yarn add https://github.com/tauri-apps/tauri-plugin-authenticator#v2

用法

首先,您需要将 authenticator 插件注册到 Tauri

src-tauri/src/main.rs

fn main() {
    tauri::Builder::default()
        .setup(|app| {
            #[cfg(desktop)]
            app.handle().plugin(tauri_plugin_authenticator::init())?;
            Ok(())
        })
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

之后,所有插件 API 都可以通过 JavaScript guest 绑定访问

import { Authenticator } from "@tauri-apps/plugin-authenticator";

const auth = new Authenticator();
auth.init(); // initialize transports

// generate a 32-bytes long random challenge
const arr = new Uint32Array(32);
window.crypto.getRandomValues(arr);
const b64 = btoa(String.fromCharCode.apply(null, arr));
// web-safe base64
const challenge = b64.replace(/\+/g, "-").replace(/\//g, "_");

const domain = "https://tauri.org.cn";

// attempt to register with the security key
const json = await auth.register(challenge, domain);
const registerResult = JSON.parse(json);

// verify the registration was successful
const r2 = await auth.verifyRegistration(
  challenge,
  app,
  registerResult.registerData,
  registerResult.clientData,
);
const j2 = JSON.parse(r2);

// sign some data
const json = await auth.sign(challenge, app, keyHandle);
const signData = JSON.parse(json);

// verify the signature again
const counter = await auth.verifySignature(
  challenge,
  app,
  signData.signData,
  clientData,
  keyHandle,
  pubkey,
);

if (counter && counter > 0) {
  console.log("SUCCESS!");
}

贡献

接受 PR。请在提交拉取请求之前确保阅读贡献指南。

合作伙伴

CrabNebula

欲获取完整的赞助商列表,请访问我们的网站Open Collective

许可证

代码:© 2015 - 现在 - 常见基金会的Tauri项目。

适用于MIT或MIT/Apache 2.0。

依赖项

~17–58MB
~896K SLoC