Signing HTTP requests without heavy SDKs

Overview

reqsign   Build Status Latest Version

Signing API requests without effort.


Most API is simple. But they could be complicated when they are hidden from complex abstraction. reqsign bring the simple API back: build, sign, send.

Quick Start

use reqsign::services::aws::v4::Signer;
use reqwest::{Client, Request, Url};
use anyhow::Result;

#[tokio::main]
async fn main() -> Result<()>{
    // Signer will load region and credentials from environment by default.
    let signer = Signer::builder().service("s3").build().await?;
    // Construct request
    let url = Url::parse( "https://s3.amazonaws.com/testbucket")?;
    let mut req = reqwest::Request::new(http::Method::GET, url);
    // Signing request with Signer
    signer.sign(&mut req).await?;
    // Sending already signed request.
    let resp = Client::new().execute(req).await?;
    println!("resp got status: {}", resp.status());
    Ok(())
}

Features

  • Pure rust with minimal dependencies.
  • Test again official SDK and services.
  • Supported services
    • AWS services (SigV4): reqsign::services::aws::v4::Signer
    • Azure Storage services: reqsign::services::azure::storage::Signer

Contributing

Check out the CONTRIBUTING.md guide for more details on getting started with contributing to this project.

Getting help

Submit issues for bug report or asking questions in discussion.

Acknowledge

Inspired a lot from:

License

Licensed under Apache License, Version 2.0.
Comments
  • feat: Add support for azure storage

    feat: Add support for azure storage

    There are still some unimplemented things, such as how to impl Debug for Signer impl Debug for Signer { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { write!( f, "Signer {{ umplement!}}" ) } }

    opened by D2Lark 5
  • feat(services): Implement huaweicloud obs signer

    feat(services): Implement huaweicloud obs signer

    Hi! I have implemented the Huawei Cloud Signer, and test it locally, PTAL.

    I'm not sure how to write integration tests for the new signer, and where to store ak / sk for test.

    opened by eastfisher 3
  • Add support for creating an azure credential with a SAS token

    Add support for creating an azure credential with a SAS token

    Right now the only auth system supported for Azure Blobs is Shared Key, which is not recommended. Shared Access Signatures are better and provide more fine-grained account control.

    opened by agocke 2
  • azblob request will replace '/' with '%2F' in url

    azblob request will replace '/' with '%2F' in url

    for example refer thisI want list blob by getting this Url "https://<user>.blob.core.windows.net/<container>?restype=container&comp=list&prefix=/dir" .But this doesn't work. URL encode '/' to '%2F' like that "https://<user>.blob.core.windows.net/<container>?restype=container&comp=list&prefix=%2Fdir" so I use path = str::replace(&path, "/", "%2F");
    mentioned in this pr

    opened by D2Lark 2
  • aws: imds_v2 credential has some problem

    aws: imds_v2 credential has some problem

    Databend failed to start after removing access_key_id and secret_access_key .

    [storage.s3]
    bucket = "xx"
    endpoint_url = "https://s3.ap-northeast-1.amazonaws.com"
    #access_key_id = "xx"
    #secret_access_key = "xx"
    
    {"timestamp":"2022-12-12T16:44:44.716618Z","level":"WARN","fields":{"message":"load_via_profile_shared_credentials_file failed: No such file or directory (os error 2)","log.target":"reqsign::aws::config","log.module_path":"reqsign::aws::config","log.file":"/opt/rust/cargo/registry/src/github.com-1ecc6299db9ec823/reqsign-0.6.9/src/aws/config.rs","log.line":174},"target":"reqsign::aws::config"}
    {"timestamp":"2022-12-12T16:44:44.716640Z","level":"WARN","fields":{"message":"load_via_profile_config_file failed: No such file or directory (os error 2)","log.target":"reqsign::aws::config","log.module_path":"reqsign::aws::config","log.file":"/opt/rust/cargo/registry/src/github.com-1ecc6299db9ec823/reqsign-0.6.9/src/aws/config.rs","log.line":176},"target":"reqsign::aws::config"}
    {"timestamp":"2022-12-12T16:44:44.717063Z","level":"WARN","fields":{"message":"load credential via imds v2 failed: http://169.254.169.254/latest/api/token: status code 400","log.target":"reqsign::aws::credential","log.module_path":"reqsign::aws::credential","log.file":"/opt/rust/cargo/registry/src/github.com-1ecc6299db9ec823/reqsign-0.6.9/src/aws/credential.rs","log.line":141},"target":"reqsign::aws::credential"}
    {"timestamp":"2022-12-12T16:44:44.717086Z","level":"INFO","fields":{"message":"load credential failed but we allowing anonymous access","log.target":"reqsign::aws::credential","log.module_path":"reqsign::aws::credential","log.file":"/opt/rust/cargo/registry/src/github.com-1ecc6299db9ec823/reqsign-0.6.9/src/aws/credential.rs","log.line":171},"target":"reqsign::aws::credential"}
    {"timestamp":"2022-12-12T16:44:44.748011Z","level":"WARN","fields":{"message":"service=s3 operation=list path=/ -> errored: ObjectPermissionDenied (permanent) at ObjectPage::next_page => S3Error { code: \"AccessDenied\", message: \"Access Denied\", resource: \"\", request_id: \"xx\" }\n\nContext:\n    response: Parts { status: 403, version: HTTP/1.1, headers: {\"x-amz-bucket-region\": \"ap-northeast-1\", \"x-amz-request-id\": \"xx\", \"x-amz-id-2\": \"xx\", \"content-type\": \"application/xml\", \"transfer-encoding\": \"chunked\", \"date\": \"Mon, 12 Dec 2022 16:44:44 GMT\", \"server\": \"AmazonS3\"} }\n    service: s3\n    path: /\n","log.target":"opendal::services","log.module_path":"opendal::layers::logging","log.file":"/opt/rust/cargo/registry/src/github.com-1ecc6299db9ec823/opendal-0.22.1/src/layers/logging.rs","log.line":1221},"target":"opendal::services"}
    

    I found two problems:

    x-aws-ec2-metadata-token-ttl-seconds request header for http://169.254.169.254/latest/api/token is required.

    curl -X PUT -v "http://169.254.169.254/latest/api/token"
    *   Trying 169.254.169.254:80...
    * Connected to 169.254.169.254 (169.254.169.254) port 80 (#0)
    > PUT /latest/api/token HTTP/1.1
    > Host: 169.254.169.254
    > User-Agent: curl/7.79.1
    > Accept: */*
    >
    * Mark bundle as not supporting multiuse
    < HTTP/1.1 400 Bad Request
    < Content-Length: 0
    < Date: Mon, 12 Dec 2022 16:23:52 GMT
    < Server: EC2ws
    < Connection: close
    < Content-Type: text/plain
    <
    * Closing connection 0
    
    curl -X PUT -v "http://169.254.169.254/latest/api/token" -H "x-aws-ec2-metadata-token-ttl-seconds: 60"
    *   Trying 169.254.169.254:80...
    * Connected to 169.254.169.254 (169.254.169.254) port 80 (#0)
    > PUT /latest/api/token HTTP/1.1
    > Host: 169.254.169.254
    > User-Agent: curl/7.79.1
    > Accept: */*
    > x-aws-ec2-metadata-token-ttl-seconds: 60
    >
    * Mark bundle as not supporting multiuse
    < HTTP/1.1 200 OK
    < X-Aws-Ec2-Metadata-Token-Ttl-Seconds: 60
    < Content-Length: 56
    < Date: Mon, 12 Dec 2022 16:25:20 GMT
    < Server: EC2ws
    < Connection: close
    < Content-Type: text/plain
    <
    * Closing connection 0
    xxxxxxxxx
    

    The response format for http://169.254.169.254/latest/meta-data/iam/security-credentials is json.

    TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 60"`
    ROLE=`curl -H "x-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/`
    curl -H "x-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/iam/security-credentials/$ROLE
    *   Trying 169.254.169.254:80...
    * Connected to 169.254.169.254 (169.254.169.254) port 80 (#0)
    > GET /latest/meta-data/iam/security-credentials/xxxxxxxx HTTP/1.1
    > Host: 169.254.169.254
    > User-Agent: curl/7.79.1
    > Accept: */*
    > x-aws-ec2-metadata-token: xxxxxxxx
    >
    * Mark bundle as not supporting multiuse
    < HTTP/1.1 200 OK
    < X-Aws-Ec2-Metadata-Token-Ttl-Seconds: 60
    < Content-Type: text/plain
    < Accept-Ranges: none
    < Last-Modified: Mon, 12 Dec 2022 15:42:45 GMT
    < Content-Length: 1462
    < Date: Mon, 12 Dec 2022 16:33:07 GMT
    < Server: EC2ws
    < Connection: close
    <
    {
      "Code" : "Success",
      "LastUpdated" : "2022-12-12T15:42:33Z",
      "Type" : "AWS-HMAC",
      "AccessKeyId" : "xxxxxxxx",
      "SecretAccessKey" : "xxxxxxxx",
      "Token" : "xxxxxxxx",
      "Expiration" : "2022-12-12T22:12:07Z"
    * Closing connection 0```
    opened by yufan022 1
  • Allow reading oidc token from ALIBABA_CLOUD_OIDC_TOKEN_FILE

    Allow reading oidc token from ALIBABA_CLOUD_OIDC_TOKEN_FILE

    https://github.com/AliyunContainerService/ack-ram-tool/blob/main/examples/rrsa/go-sdk/README.md

    $ export ALIBABA_CLOUD_ROLE_ARN=<role_arn>
    $ export ALIBABA_CLOUD_OIDC_PROVIDER_ARN=<oidc_provider_arn>
    $ export ALIBABA_CLOUD_OIDC_TOKEN_FILE=<oidc_token_file>
    
    opened by Xuanwo 1
  • feat: Filt subresource in obs signer

    feat: Filt subresource in obs signer

    https://support.huaweicloud.com/intl/en-us/api-obs/obs_04_0010.html

    In OBS, we can only add specific subresource params in the CanonicalizedResource, and other params should be discarded.

    e.g. For a list object request:

    GET /?delimiter=/

    The CanonicalizedResource is /bucket/, not /bucket/?delimiter=/, since delimiter is not a subresource.

    opened by eastfisher 1
  • google-cloud-storage: Read from well known files

    google-cloud-storage: Read from well known files

    // Google provide DefaultCredentials support via env.
    // It will read credentials via:
    // - file path in GOOGLE_APPLICATION_CREDENTIALS
    // - Well known files on different platforms
    //   - On unix platform: `~/.config/gcloud/application_default_credentials.json`
    //   - On windows platform: `$APPDATA/gcloud/application_default_credentials.json`
    // - Metadata server in Google App Engine or Google Compute Engine
    
    opened by Xuanwo 1
  • Support ietf http-message-signatures

    Support ietf http-message-signatures

    IETF's Http message signatures draft reached wg-last-call state, and should be published as rfc soon. It would be great if standard will be supported.

    opened by damooo 0
  • aliyun: Allow from from ALICLOUD_ROLE_ARN

    aliyun: Allow from from ALICLOUD_ROLE_ARN

    aliyun cloud sdk may load from ALICLOUD_ROLE_ARN too.

    https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/sdk/auth/credentials/providers/env.go

    image

    opened by Xuanwo 0
Releases(v0.7.4)
  • v0.7.4(Jan 3, 2023)

    What's Changed

    • Add support for creating an azure credential with a SAS token by @agocke in https://github.com/Xuanwo/reqsign/pull/215
    • feat: Enable rustls support by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/216
    • chore(deps): Update quick-xml requirement from 0.26 to 0.27 by @dependabot in https://github.com/Xuanwo/reqsign/pull/217
    • Bump to version 0.7.4 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/218

    New Contributors

    • @agocke made their first contribution in https://github.com/Xuanwo/reqsign/pull/215

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.7.3...v0.7.4

    Source code(tar.gz)
    Source code(zip)
  • v0.7.3(Dec 20, 2022)

    What's Changed

    • feat: Add Send & Sync bound for TokenLoad by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/212
    • Bump to version 0.7.3 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/213

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.7.2...v0.7.3

    Source code(tar.gz)
    Source code(zip)
  • v0.7.2(Dec 20, 2022)

    What's Changed

    • feat: Implement token loader for google by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/207
    • docs: Fix build status link by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/208
    • feat: Implement customed credential loader for aws by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/209
    • Bump to version 0.7.2 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/210

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.7.1...v0.7.2

    Source code(tar.gz)
    Source code(zip)
  • v0.7.1(Dec 16, 2022)

    What's Changed

    • chore(deps): Update aws-sigv4 requirement from 0.51 to 0.52 by @dependabot in https://github.com/Xuanwo/reqsign/pull/203
    • feat(aws): Re-order credential loader by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/204
    • Bump to version 0.7.1 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/205

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.7.0...v0.7.1

    Source code(tar.gz)
    Source code(zip)
  • v0.7.0(Dec 13, 2022)

    What's Changed

    • chore(deps): Update base64 requirement from 0.13 to 0.20 by @dependabot in https://github.com/Xuanwo/reqsign/pull/196
    • fix(aws): x-aws-ec2-metadata-token-ttl-second not set & parse json by @yufan022 in https://github.com/Xuanwo/reqsign/pull/198
    • feat(google): Support loading from vm metadata by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/199
    • Bump to version 0.7.0 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/200

    New Contributors

    • @yufan022 made their first contribution in https://github.com/Xuanwo/reqsign/pull/198

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.6.9...v0.7.0

    Source code(tar.gz)
    Source code(zip)
  • v0.6.9(Dec 5, 2022)

    What's Changed

    • fix(s3): Builder's API is incorrect by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/191
    • Bump to version 0.6.9 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/192

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.6.8...v0.6.9

    Source code(tar.gz)
    Source code(zip)
  • v0.6.8(Dec 5, 2022)

    What's Changed

    • feat(aws): Allow disable load from imds v2 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/187
    • feat: Set timeout for request to AWS STS services by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/188
    • Bump to version 0.6.8 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/189

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.6.7...v0.6.8

    Source code(tar.gz)
    Source code(zip)
  • v0.6.7(Dec 2, 2022)

    What's Changed

    • chore(deps): Update env_logger requirement from 0.9 to 0.10 by @dependabot in https://github.com/Xuanwo/reqsign/pull/180
    • feat(services/aws): Implement IMDSv2 support by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/181
    • feat: Implement query sign for oss by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/182
    • Bump version 0.6.7 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/184

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.6.6...v0.6.7

    Source code(tar.gz)
    Source code(zip)
  • v0.6.6(Nov 23, 2022)

    What's Changed

    • fix(aws): assume_role_with_web_identity should also use endpoint by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/177
    • Bump to version 0.6.6 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/178

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.6.5...v0.6.6

    Source code(tar.gz)
    Source code(zip)
  • v0.6.5(Nov 23, 2022)

    What's Changed

    • feat(services/aws): Add regional sts support by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/174
    • Bump to version 0.6.5 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/175

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.6.4...v0.6.5

    Source code(tar.gz)
    Source code(zip)
  • v0.6.4(Nov 15, 2022)

    What's Changed

    • chore(deps): Update aws-sigv4 requirement from 0.49 to 0.51 by @dependabot in https://github.com/Xuanwo/reqsign/pull/168
    • refactor: disable default features for ureq by @messense in https://github.com/Xuanwo/reqsign/pull/171
    • Bump to version 0.6.4 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/172

    New Contributors

    • @messense made their first contribution in https://github.com/Xuanwo/reqsign/pull/171

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.6.3...v0.6.4

    Source code(tar.gz)
    Source code(zip)
  • v0.6.3(Oct 24, 2022)

    What's Changed

    • fix: Don't retry if allow anonymous by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/165
    • Bump to version 0.6.3 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/166

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.6.2...v0.6.3

    Source code(tar.gz)
    Source code(zip)
  • v0.6.2(Oct 18, 2022)

    What's Changed

    • fix: Retry in the outer loop instead of every loader by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/160
    • Bump to version 0.6.2 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/161

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.6.1...v0.6.2

    Source code(tar.gz)
    Source code(zip)
  • v0.6.1(Oct 12, 2022)

    What's Changed

    • fix(aliyun/oss): Fix x-oss-security-token not set by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/156
    • Bump to version 0.6.1 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/157

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.6.0...v0.6.1

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Oct 11, 2022)

    What's Changed

    • refactor: Refactor AWS config, credential, region loaders by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/145
    • refactor: Cleanup exported types by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/146
    • refactor: Move services out by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/147
    • refactor: Expose AwsV4Signer instead of modules by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/148
    • refactor: Split loader into seperate components by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/149
    • feat(aliyun): Allow load token from ALIBABA_CLOUD_OIDC_TOKEN_FILE by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/150
    • refactor: Only expose services' Signer instead of mod by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/151
    • feat: Add assume role support for AWS by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/152
    • Bump to version 0.6.0 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/153

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.5.2...v0.6.0

    Source code(tar.gz)
    Source code(zip)
  • v0.5.2(Oct 8, 2022)

    What's Changed

    • fix(services/aliyun): continuation-token not included in sign by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/140
    • Bump to version 0.5.2 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/141

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.5.1...v0.5.2

    Source code(tar.gz)
    Source code(zip)
  • v0.5.1(Oct 8, 2022)

    What's Changed

    • fix: Aliyun OSS SignatureDoesNotMatch for special chars by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/137
    • Bump to version 0.5.1 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/138

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.5.0...v0.5.1

    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Sep 28, 2022)

    What's Changed

    • chore(deps): Update backon requirement from 0.1 to 0.2 by @dependabot in https://github.com/Xuanwo/reqsign/pull/127
    • chore(deps): Update aws-sigv4 requirement from 0.48 to 0.49 by @dependabot in https://github.com/Xuanwo/reqsign/pull/128
    • feat: Add aliyun OSS support by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/129
    • refactor: Extrace credential out by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/133
    • refactor: Move out CredentialLoad by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/134
    • Bump to version 0.5.0 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/135

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.4.3...v0.5.0

    Source code(tar.gz)
    Source code(zip)
  • v0.4.3(Sep 16, 2022)

    What's Changed

    • chore(deps): Update quick-xml requirement from 0.24 to 0.25 by @dependabot in https://github.com/Xuanwo/reqsign/pull/121
    • chore(deps): Update criterion requirement from 0.3 to 0.4 by @dependabot in https://github.com/Xuanwo/reqsign/pull/122
    • chore(deps): Update temp-env requirement from 0.2 to 0.3 by @dependabot in https://github.com/Xuanwo/reqsign/pull/123
    • feat: expose security-token to users by @ClSlaid in https://github.com/Xuanwo/reqsign/pull/124
    • Bump to version 0.4.3 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/125

    New Contributors

    • @ClSlaid made their first contribution in https://github.com/Xuanwo/reqsign/pull/124

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.4.2...v0.4.3

    Source code(tar.gz)
    Source code(zip)
  • v0.4.2(Sep 7, 2022)

    What's Changed

    • chore(deps): Update quick-xml requirement from 0.23 to 0.24 by @dependabot in https://github.com/Xuanwo/reqsign/pull/115
    • chore(deps): Update aws-sigv4 requirement from 0.47 to 0.48 by @dependabot in https://github.com/Xuanwo/reqsign/pull/116
    • refator: Use ureq for blocking requests by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/117
    • deps: Bump backon to 0.1 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/118
    • Bump to version 0.4.2 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/119

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.4.1...v0.4.2

    Source code(tar.gz)
    Source code(zip)
  • v0.4.1(Aug 28, 2022)

    What's Changed

    • fix(rustdoc): fix broken link & format code by @xxchan in https://github.com/Xuanwo/reqsign/pull/110
    • feat: Filt subresource in obs signer by @eastfisher in https://github.com/Xuanwo/reqsign/pull/112
    • Bump to version 0.4.1 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/113

    New Contributors

    • @xxchan made their first contribution in https://github.com/Xuanwo/reqsign/pull/110

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.4.0...v0.4.1

    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Aug 16, 2022)

    What's Changed

    • chore(deps): Update aws-sigv4 requirement from 0.15 to 0.46 by @dependabot in https://github.com/Xuanwo/reqsign/pull/102
    • chore(deps): Update aws-sigv4 requirement from 0.46 to 0.47 by @dependabot in https://github.com/Xuanwo/reqsign/pull/103
    • feat(services): Implement huaweicloud obs signer by @eastfisher in https://github.com/Xuanwo/reqsign/pull/105
    • Bump to version 0.4.0 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/107

    New Contributors

    • @eastfisher made their first contribution in https://github.com/Xuanwo/reqsign/pull/105

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.3.0...v0.4.0

    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Jul 4, 2022)

    What's Changed

    • refactor: Refactor AWS v4 support to support query better by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/95
    • refactor: Make SignableRequest private by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/97
    • chore(deps): Update aws-sigv4 requirement from 0.14 to 0.15 by @dependabot in https://github.com/Xuanwo/reqsign/pull/93
    • feat: Add tests for query sign with token by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/98
    • fix: Fix query signing for aws v4 with sse headers by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/99
    • Bump to version v0.3 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/100

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.2.0...v0.3.0

    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Jun 29, 2022)

    What's Changed

    • feat(services/aws/v4): Implement presign support by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/87
    • Bump to version 0.2.0 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/88

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.1.1...v0.2.0

    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Jun 27, 2022)

    What's Changed

    • chore(deps): Update aws-sigv4 requirement from 0.12 to 0.13 by @dependabot in https://github.com/Xuanwo/reqsign/pull/76
    • chore(deps): Bump amondnet/vercel-action from 20 to 25 by @dependabot in https://github.com/Xuanwo/reqsign/pull/75
    • services/aws/v4: Add test for virtual host by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/78
    • chore(deps): Update aws-sigv4 requirement from 0.13 to 0.14 by @dependabot in https://github.com/Xuanwo/reqsign/pull/79
    • fix(services/aws/v4): Percent encoded URI not handled correctly by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/80
    • feat(azure): Add test for azure storage by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/82
    • Bump to version 0.1.1 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/83

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.1.0...v0.1.1

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(May 31, 2022)

    What's Changed

    • feat(aws): Add dummy loader by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/69
    • docs: Make sure all our public APIs have docs by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/70
    • feat: Enable feature gates by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/71
    • feat: Support signing http_types::Request by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/72
    • Bump to version 0.1.0 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/73

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.0.5...v0.1.0

    Source code(tar.gz)
    Source code(zip)
  • v0.0.5(May 27, 2022)

    What's Changed

    • chore(deps): Update quick-xml requirement from 0.22.0 to 0.23.0 by @dependabot in https://github.com/Xuanwo/reqsign/pull/64
    • fix(services/aws): Increase retry times for AWS STS by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/65
    • feat(services/s3): Make sure token file has been re-read by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/66
    • Bump to version 0.0.5 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/67

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.0.4...v0.0.5

    Source code(tar.gz)
    Source code(zip)
  • v0.0.4(May 25, 2022)

    What's Changed

    • chore(deps): Update aws-sigv4 requirement from 0.9 to 0.10 by @dependabot in https://github.com/Xuanwo/reqsign/pull/50
    • chore(deps): Update aws-sigv4 requirement from 0.10 to 0.11 by @dependabot in https://github.com/Xuanwo/reqsign/pull/51
    • refactor(services/aws): Load region in blocking by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/53
    • refactor(services/aws): Load cred in blocking by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/54
    • refactor(services/azure): Make azure sign with block by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/55
    • refactor(services/google): Make google singer is blocking by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/56
    • chore(deps): Update aws-sigv4 requirement from 0.11 to 0.12 by @dependabot in https://github.com/Xuanwo/reqsign/pull/57
    • feat(aws/v4): Add test for WebIdentityTokenLoader by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/58
    • feat(aws): Retry while meeting errors by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/59
    • chore: Remove reference to reqwest::blocking by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/60
    • Bump version 0.0.4 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/61

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.0.3...v0.0.4

    Source code(tar.gz)
    Source code(zip)
  • v0.0.3(Mar 28, 2022)

    What's Changed

    • feat: Implement google auth support by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/42
    • test: Add more list test cases for azblob by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/44
    • test: Implement integration tests for google cloud storage by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/45
    • docs: Add more docs for google signer by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/46
    • fix(service/aws/v4): Request path should be encoded by UriEncode by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/47
    • Bump to version 0.0.3 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/48

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.0.2...v0.0.3

    Source code(tar.gz)
    Source code(zip)
  • v0.0.2(Mar 23, 2022)

    What's Changed

    • deps: reqsign needs time >= 0.3.6 to build by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/27
    • feat: Add support for azure storage by @D2Lark in https://github.com/Xuanwo/reqsign/pull/29
    • services/azure/storage: Implement integration tests by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/33
    • refactor: Make time much easier to use and add unit tests by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/34
    • tests: Implement integration tests for aws v4 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/37
    • chore(deps): Update aws-sigv4 requirement from 0.8 to 0.9 by @dependabot in https://github.com/Xuanwo/reqsign/pull/36
    • docs: Update docs for azure storage by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/38
    • Bump to version 0.0.2 by @Xuanwo in https://github.com/Xuanwo/reqsign/pull/39

    New Contributors

    • @D2Lark made their first contribution in https://github.com/Xuanwo/reqsign/pull/29
    • @dependabot made their first contribution in https://github.com/Xuanwo/reqsign/pull/36

    Full Changelog: https://github.com/Xuanwo/reqsign/compare/v0.0.1...v0.0.2

    Source code(tar.gz)
    Source code(zip)
Owner
Xuanwo
An infrastructure engineer.
Xuanwo
Library + CLI-Tool to measure the TTFB (time to first byte) of HTTP requests. Additionally, this crate measures the times of DNS lookup, TCP connect and TLS handshake.

TTFB: CLI + Lib to Measure the TTFB of HTTP/1.1 Requests Similar to the network tab in Google Chrome or Mozilla Firefox, this crate helps you find the

Philipp Schuster 24 Dec 1, 2022
📡Proxy HTTP/1.1 requests over a sensitive point-to-point link

ptproxy Motivation What's this? Why do I need this? What's a sensitive network link? What's wrong with a VPN? What's wrong with HTTP[S]? What's wrong

Alba Mendez 5 Jul 26, 2023
JSON-RPC endpoint proxy that dumps requests/responses for debugging

json_rpc_snoop How to build Ensure you have cargo installed and in your PATH (the easiest way is to visit https://rustup.rs/) make This will create t

null 10 Dec 14, 2022
A Rust library for parsing the SOME/IP network protocol (without payload interpretation).

someip_parse A Rust library for parsing the SOME/IP network protocol (without payload interpretation). Usage Add the following to your Cargo.toml: [de

Julian Schmid 18 Oct 31, 2022
Obtain (wildcard) certificates from let's encrypt using dns-01 without the need for API access to your DNS provider.

Agnos Presentation Agnos is a single-binary program allowing you to easily obtain certificates (including wildcards) from Let's Encrypt using DNS-01 c

Arthur Carcano 246 Dec 20, 2022
QUIC proxy that allows to use QUIC to connect to an SSH server without needing to patch the client or the server.

quicssh-rs ?? quicssh-rs is a QUIC proxy that allows to use QUIC to connect to an SSH server without needing to patch the client or the server. quicss

Jun Ouyang 18 May 5, 2023
🥧 Savoury implementation of the QUIC transport protocol and HTTP/3

quiche is an implementation of the QUIC transport protocol and HTTP/3 as specified by the IETF. It provides a low level API for processing QUIC packet

Cloudflare 7.1k Jan 8, 2023
Bevy asset loader that transparently supports loading over http(s)

Bevy Web Asset This is a tiny crate that that wraps the standard bevy asset loader, and adds the ability to load assets from http and https urls. Supp

Johan Klokkhammer Helsing 28 Jan 2, 2023
Hudsucker is a MITM HTTP/S proxy written in Rust.

hudsucker Hudsucker is a MITM HTTP/S proxy written in Rust. Features Modify HTTP/S requests Modify HTTP/S responses Modify websocket messages Usage Fo

null 86 Dec 25, 2022
Tunnel TCP traffic through SOCKS5 or HTTP using a TUN interface.

tun2proxy Tunnel TCP traffic through SOCKS5 or HTTP on Linux. Authentication not yet supported. Error handling incomplete and too restrictive. Build C

B. Blechschmidt 34 Nov 29, 2022
A remote shell, TCP tunnel and HTTP proxy for Replit.

Autobahn A remote shell, TCP tunnel and HTTP proxy for Replit. Hybrid SSH/HTTP server for Replit. Based on leon332157/replish. Autobahn runs a WebSock

Patrick Winters 12 Sep 24, 2022
A proxy implement with http / socks5 in-bound and vmess out-bound, written in Rust and tokio.rs

tokio-vmess an Asynchronous proxy implement with http / socks5 in-bound and vmess out-bound, written in Rust and tokio Run example first, Fill out the

irumeria 7 Oct 3, 2022
Conway Game of Life plus WebAssembly and basic HTTP Server

Conway Game of Life plus WebAssembly and basic HTTP Server How to run First, you have to choose what server do you want to use for hosting the wasm ga

Lambdaclass 8 Sep 6, 2022
A crate for parsing HTTP rate limit headers as per the IETF draft

rate-limits A crate for parsing HTTP rate limit headers as per the IETF draft. Inofficial implementations like the Github rate limit headers are also

Matthias 3 Jul 9, 2022
Lightweight proxy that allows redirect HTTP(S) traffic through a proxy.

Proxyswarm Proxyswarm is a lightweight proxy that allows redirect HTTP(S) traffic through a proxy. WARNING: This app isn't recomended for download lar

Jorge Alejandro Jimenez Luna 4 Apr 16, 2022
♻ A simple and efficient Gemini-to-HTTP proxy written in Rust.

September A simple and efficient Gemini-to-HTTP proxy written in Rust. Usage Docker $ docker run -d [ -e ROOT="gemini://fuwn.me" ] [ -e PORT="8080"] [

GemRest 10 Jul 2, 2022
A simple cross-platform remote file management tool to upload and download files over HTTP/S

A simple cross-platform remote file management tool to upload and download files over HTTP/S

sexnine 13 Dec 30, 2022
Reverse proxy for HTTP microservices and STDIO. Openfass watchdog which can run webassembly with wasmer-gpu written in rust.

The of-watchdog implements an HTTP server listening on port 8080, and acts as a reverse proxy for running functions and microservices. It can be used independently, or as the entrypoint for a container with OpenFaaS.

yanghaku 7 Sep 15, 2022
A TCP proxy using HTTP - Reach SSH behind a Nginx reverse proxy

?? TCP over HTTP ?? The Questions ?? What does it do? You can proxy TCP traffic over HTTP. A basic setup would be: [Your TCP target] <--TCP-- [Exit No

Julian 185 Dec 15, 2022