9个不稳定版本 (3个重大变更)
0.4.0 | 2024年5月26日 |
---|---|
0.3.0 | 2024年5月26日 |
0.2.1 | 2024年5月26日 |
0.1.4 | 2024年5月26日 |
#122 in 认证
每月下载量 303次
165KB
3.5K SLoC

passage-auth
Passage认证库,适用于Rust! 🦀
概述
passage-auth
是一个非官方的Rust库,用于 1Password的Passage.
-
它严格遵循 Passage认证API.
-
当前功能
- 应用
- 认证
- 当前用户
- JWKS
- 登录
- MagicLink
- OpenId
- OTP
- 注册
- 令牌
- 用户
- OAuth2
- Passkey准备就绪(不计划添加支持)
模型是通过OpenAPI Generator自动生成的。其余的认证API是由你的朋友们在Kindness构建的。验证函数的一些先验知识来自我们的朋友Rob Yoder。
[!警告]
这个crate是全新的,并非所有功能都经过测试或文档化。预期会有破坏性的变更。
用法
该库从环境变量 PASSAGE_APP_ID
读取您的Passage APP ID,并可选地从 PASSAGE_PUB_JWK
验证令牌。您还可以传递一个 Config
对象或使用 Config
构建器来创建Passage客户端。
验证JWT
// Create a new passage instance
let passage = Passage::with_config(Config::default().with_app_id(APP_ID.to_string()));
// Retrieve the JSON Web Key Set (JWKS) for your Passage application.
let response: JwkResponse = passage.jwks().get_jwks().await?;
passage.set_pub_jwk(response.keys.first()?)
// Verify a user's JWT
let passage_id = passage.authenticate().authenticate_token(jwt)?;
assert_eq!(passage_id, "AabRBkquedeVBxv9kFyfeXHI".to_owned());
一旦验证了用户,您的应用程序就可以进行其操作!此库几乎具有Passage认证API的所有功能,因此您可以进行更多操作。例如
获取有关用户的信息
let passage = Passage::with_config(
Config::default()
.with_app_id(APP_ID.to_string())
.with_user_bearer_token(JWT.to_string()),
);
let response: CurrentUserResponse = passage.current_user().get_current_user().await?;
println!(response.user)
CurrentUserResponse { user: CurrentUser { created_at: "2024-05-25T12:14:42.420571Z", email: "ted@tedlasso.org", email_verified: true, id: "AabRBkquedeVBxv9kFyfeXHI", last_login_at: "2024-05-25T14:27:53.825045Z", login_count: 3, phone: "", phone_verified: false, social_connections: UserSocialConnections { apple: None, github: None, google: None }, status: Active, updated_at: "2024-05-25T14:27:53.975632Z", user_metadata: None, webauthn: false, webauthn_devices: [], webauthn_types: [] } }
刷新令牌或吊销刷新令牌
// APP ID loaded via environment variable
let passage = Passage::new();
// Refresh tokens
let response = passage.tokens().refresh_auth_token(RefreshAuthTokenRequest{refresh_token}).await
// Revoke refresh token
let response = passage.tokens().revoke_refresh_token(refresh_token)
许可证
此项目受MIT许可证许可。
依赖项
~7–22MB
~317K SLoC