Rust abstractions for multi-platform native authentication.
This crate supports:
- Apple: TouchID, FaceID, and regular username/password on both macOS and iOS.
- Android: See below for additional steps.
- Requires the
USE_BIOMETRIC
permission in your app's manifest.
- Requires the
- Windows: Windows Hello (face recognition, fingerprint, PIN), plus winrt-based fallback for username/password.
- Linux:
polkit
-based authentication using the desktop environment's prompt.- Note: Linux support is currently incomplete.
For authentication to work, the following must be added to your app's
AndroidManifest.xml
:
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
use robius_authentication::{
AndroidText, BiometricStrength, Context, Policy, PolicyBuilder, Text, WindowsText,
};
let policy: Policy = PolicyBuilder::new()
.biometrics(Some(BiometricStrength::Strong))
.password(true)
.watch(true)
.build()
.unwrap();
let text = Text {
android: AndroidText {
title: "Title",
subtitle: None,
description: None,
},
apple: "authenticate",
windows: WindowsText::new("Title", "Description"),
};
let auth_result = Context::new(()).blocking_authenticate(text, &policy);
...
For more details about the prompt text, see the Text
struct,
which allows you to customize the prompt for each platform.