7个版本 (3个稳定版本)

1.0.2 2024年4月5日
1.0.1 2023年4月29日
0.3.0-alpha2023年4月29日
0.2.1-alpha2023年4月29日
0.1.0-alpha2023年4月28日

145认证 中排名

Download history 60/week @ 2024-04-27 82/week @ 2024-05-04 187/week @ 2024-05-11 221/week @ 2024-05-18 185/week @ 2024-05-25 72/week @ 2024-06-01 197/week @ 2024-06-08 161/week @ 2024-06-15 173/week @ 2024-06-22 256/week @ 2024-06-29 197/week @ 2024-07-06 160/week @ 2024-07-13 222/week @ 2024-07-20 118/week @ 2024-07-27 36/week @ 2024-08-03 17/week @ 2024-08-10

每月418 次下载

GPL-2.0-or-later

23KB
280

轻量级OpenID

Build Status Crate

轻量级OpenID原语和客户端。此包可以将应用程序转换为OpenID依赖方。

警告! 此crate尚未经过审计,使用风险自负!

实现与 OpenIDConfig 辅助结构交互的路由(开始和完成认证)是您的责任。

此外,仅支持OpenID规范的一小部分

  • code 授权流程
  • 作用域 openid profile email 是硬编码的,无法更改
  • 使用 userinfo 端点检索用户信息

基本用法

let config = OpenIDConfig::load_from_url(&AppConfig::get().configuration_url).await.unwrap();

// Start authentication
let auth_url = config.gen_authorization_url("client_id", "state", "redirect_uri");
redirect_user(auth_url);


// Finish authentication
let token_response = config.request_token("client_id", "client_secret", "code", "redirect_uri").await.unwrap();
let user_info = config.request_user_info(&token_response).await.unwrap();
// user_info now contains profile info of user

功能 crypto-wrapper

CryptoWrapper 是一个辅助工具,可以将数据加密为base64编码的字符串结构

#[derive(Encode, Decode, Eq, PartialEq, Debug)]
struct Message(String);

fun test() {
    let wrapper = CryptoWrapper::new_random();
    let msg = Message("Hello world".to_string());
    let enc = wrapper.encrypt(&msg).unwrap();
    let dec: Message = wrapper.decrypt( & enc).unwrap();
    
    assert_eq!(dec, msg);
}

注意:为了在自己的项目中使用 CryptoWrapper,您必须将 bincode(版本 >= 2.0.0)作为您的依赖项之一添加。如果您决定使用 BasicStateManager,则无需此依赖项。

BasicStateManager 是一个辅助工具,它使用 CryptoWrapper 生成和验证OpenID认证的状态

let ip = IpAddr::V4(Ipv4Addr::new(192, 168, 1, 1));
let manager = BasicStateManager::new();
let state = manager.gen_state(ip).unwrap();
assert!(manager.validate_state(ip, &state).is_ok());

完整示例

此crate的完整示例用法可在以下位置找到: https://gitea.communiquons.org/pierre/oidc-test-client

依赖项

~4–15MB
~214K SLoC