#rocket #oauth2 #oauth

rocket_oauth2

OAuth2 for Rocket applications

12 releases

0.5.0-rc.2 Apr 18, 2023
0.5.0-rc.1 Jun 9, 2021
0.4.1 Sep 23, 2020
0.3.1 Jul 19, 2020
0.0.4 Nov 1, 2018

#133 in Authentication

Download history 112/week @ 2023-06-01 38/week @ 2023-06-08 65/week @ 2023-06-15 80/week @ 2023-06-22 82/week @ 2023-06-29 76/week @ 2023-07-06 85/week @ 2023-07-13 107/week @ 2023-07-20 57/week @ 2023-07-27 68/week @ 2023-08-03 69/week @ 2023-08-10 73/week @ 2023-08-17 33/week @ 2023-08-24 46/week @ 2023-08-31 128/week @ 2023-09-07 86/week @ 2023-09-14

300 downloads per month

MIT/Apache

51KB
657 lines

rocket_oauth2

maintenance: passive crates.io docs.rs

rocket_oauth2 helps set up an OAuth 2.0 client in Rocket applications.

Major Versions

  • 0.4.x, compatible with rocket 0.4.x, are based on the master branch
  • 0.5.0-rc.x, compatible with rocket 0.5.0-rc.x, are based on the next branch

Quickstart Example

For more detailed examples and explanations, see the crate documentation and the projects in the repository's examples directory.

Code

use rocket::http::{Cookie, CookieJar, SameSite};
use rocket::Request;
use rocket::response::Redirect;
use rocket_oauth2::{OAuth2, TokenResponse};

struct GitHub;

#[get("/login/github")]
fn github_login(oauth2: OAuth2<GitHub>, cookies: &CookieJar<'_>) -> Redirect {
    oauth2.get_redirect(cookies, &["user:read"]).unwrap()
}

#[get("/auth/github")]
fn github_callback(token: TokenResponse<GitHub>, cookies: &CookieJar<'_>) -> Redirect
{
    cookies.add_private(
        Cookie::build("token", token.access_token().to_string())
            .same_site(SameSite::Lax)
            .finish()
    );
    Redirect::to("/")
}

#[launch]
fn rocket() -> _ {
    rocket::build()
        .mount("/", routes![github_callback, github_login])
        .attach(OAuth2::<GitHub>::fairing("github"))
}

Configuration (Rocket.toml)

[default.oauth.github]
provider = "GitHub"
client_id = "..."
client_secret = "..."
redirect_uri = "http://localhost:8000/auth/github"

License

rocket_oauth2 is licensed under either of the following, at your option:

Dependencies

~9–13MB
~277K SLoC