#security #http-request #web #http-client #key-file #config-file

mauth-client

使用 Medidata MAuth 协议签名请求并验证响应

4 个版本 (重大变更)

0.4.0 2024 年 6 月 11 日
0.3.0 2024 年 1 月 4 日
0.2.0 2023 年 2 月 17 日
0.1.0 2021 年 1 月 19 日

#1040身份验证

每月 50 次下载

MIT 许可证

39KB
691

mauth-client

mauth-client

此 crate 允许 Reqwest crate 的用户使用 MAuth 协议对 HTTP 请求进行签名,并验证响应。使用示例

注意:此 crate 和 Medidata 中的 Rust 支持被视为实验性的。在没有通过架构和安全小组批准整个堆栈的情况下,请不要发布任何代码到生产环境或部署到客户端可访问的环境。

use mauth_client::MAuthInfo;
use reqwest::Client;
let mauth_info = MAuthInfo::from_default_file().unwrap();
let client = Client::new();
let mut req = client.get("https://www.example.com/").build().unwrap();
mauth_info.sign_request(&mut req);
match client.execute(req).await {
    Err(err) => println!("Got error {}", err),
    Ok(response) => println!("Got validated response with body {}", response.text().await.unwrap()),
}

上述代码将从 ~/.mauth_config.yml 中的文件读取您的 mauth 配置,其格式为

common: &common
  mauth_baseurl: https://<URL of MAUTH SERVER>
  mauth_api_version: v1
  app_uuid: <YOUR APP UUID HERE>
  private_key_file: <PATH TO MAUTH KEY>

可选的 axum-service 功能提供了 Tower Layer 和 Service,它将通过 MAuth V2 或 V1 验证传入的请求,并通过 ValidatedRequestDetails 结构提供 lower layers 验证后的 app_uuid。

许可证:MIT

依赖项

~16–31MB
~506K SLoC