5个版本
0.2.0 | 2023年4月26日 |
---|---|
0.1.3 | 2023年2月3日 |
0.1.2 | 2023年2月3日 |
0.1.1 | 2023年1月26日 |
0.1.0 | 2023年1月26日 |
在 身份验证 中排名第792
每月下载量26次
24KB
206 行
Rust的Passage SDK
此crate提供了一个用于与Passage(基于passkeys和魔法链接的现代无密码身份验证体验)一起工作的库。此库目前实现了可用的Passage API端点的非常小的一部分。
目前,此SDK帮助进行服务器端身份验证。
安装
cargo add passage-id
示例:验证Passage JWT
extern crate passage_id;
use crate::passage_id::Passage;
fn main() {
// Your app id from https://console.passage.id/settings
let app_id = "...";
// Create an api key for your app at https://console.passage.id/settings/apikeys
let api_key = "...";
// Download your app's public jwk key from https://auth.passage.id/v1/apps/{app_id}/.well-known/jwks.json. Note this is a single key, not an array.
let pub_key = r#"{
"alg": "RS256",
"kty": "RSA",
"use": "sig",
"n": "...",
"e": "AQAB",
"kid": "..."
}"#;
// The Passage struct can be created once, stored/cached, and reused across multiple requests.
let passage = Passage::new(String::from(app_id), String::from(api_key), String::from(pub_key));
// If you are using an Element, the Passage JWT will be sent to your application via a cookie with the key `psg_auth_token`
let psg_auth_token = "...";
let result = passage.authenticate_token(psg_auth_token);
match result {
Ok(passage_user_id) => println!(
"Passage JWT is valid. passage_user_id=<{}>",
passage_user_id
),
Err(err) => {
println!("Auth error: {:?}", err);
}
}
}
依赖项
~6.5–9.5MB
~266K SLoC