#段落 #SDK #身份 #服务器 #服务器端 #辅助

段落ID

段落.id身份验证的服务器SDK

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

MIT 协议

24KB
206

Passage logo

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