12 releases

new 0.1.23 Oct 30, 2024
0.1.22 Oct 30, 2024

#455 in Web programming

Download history 235/week @ 2024-10-21 825/week @ 2024-10-28

1,060 downloads per month

MIT license

51KB
1K SLoC

Rusty-Oauth

License Crates.io

rusty-oauth is a simple, lightweight, and efficient Rust crate that facilitates OAuth 2.0 authentication with popular service providers such as Google, GitHub, Facebook, and more. This crate provides an easy-to-use interface to handle the OAuth authorization flow, manage tokens, and interact with user data through RESTful APIs. Designed to be minimal yet powerful, OAuth-Rust helps developers integrate secure authentication into their Rust application

Table of Contents

Features

  • Gain Control over the authorization.
  • Build for developer seeking for low level oauth.
  • Built in Tls config : So no need to worry about breach of security.
  • HTTP/2 & HTTP/3 Support: Extending the potential of oauth control over the properties.
  • Asynchronous | Syncronous : Non-blocking parsing for better performance.

Installation

To include this crate in your project, add the following line to your Cargo.toml:

[dependencies]
rusty_oauth = "0.1.1"


    let secret = ClientSecret::new("").unwrap();
    let client_id = ClientId::new("").unwrap();
    let redirect = ClientProviderUrl::new(rusty_oauth::Providers::GOOGLE);
    let email = Scope::UserScope(rusty_oauth::scope::scope::UserScope::Email);
    let profile = Scope::UserScope(rusty_oauth::scope::scope::UserScope::Profile);
    let scope = handle_scope(&[email, profile]);

    let code_verifier = Code::code_verifier();
    let code_challenge = Code::code_challenge(&code_verifier);

    let client = Client::new(
        &client_id,
        &secret,
        &redirect,
        &client_token_url,
        scope,
        code_verifier.clone(),
        code_challenge,
    );

    # add the path to build the url
    client.build(&stream); # stream from tcplistener

    # generate authorization code
    let code = client
            .handle_authorization_code(path)
            .exchange_code(&stream, "/") #stream from tcplistener and redirect url
            .unwrap()
            .unwrap()
            .decode_token();

    let token = decode_token(token);
        match token {
            rusty_oauth::client::decode::decode::Token::Github(token) => {}
            rusty_oauth::client::decode::decode::Token::Google(token) => {}
        }


Acknowledgements

This project was created and maintained by Me, To give the ability to developer to gain control over oauth

Special thanks to all contributors and the open-source community for their invaluable support, feedback, and contributions. Together, we continue to push the boundaries of what's possible

Dependencies

~2–11MB
~144K SLoC