From 0a7e6959714714da98c684bcedd740ecf0a25304 Mon Sep 17 00:00:00 2001 From: Lewin Bormann Date: Fri, 10 Feb 2023 20:59:01 +0100 Subject: [PATCH 01/12] Improve clarity on redirect URLs for #191 --- src/authenticator_delegate.rs | 8 ++++++++ src/installed.rs | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/src/authenticator_delegate.rs b/src/authenticator_delegate.rs index 58436ba..7b513d0 100644 --- a/src/authenticator_delegate.rs +++ b/src/authenticator_delegate.rs @@ -156,3 +156,11 @@ impl DeviceFlowDelegate for DefaultDeviceFlowDelegate {} #[derive(Copy, Clone)] pub struct DefaultInstalledFlowDelegate; impl InstalledFlowDelegate for DefaultInstalledFlowDelegate {} + +/// The default installed-flow delegate (i.e.: show URL on stdout). Use this to specify +/// a custom redirect URL. +#[derive(Clone)] +pub struct DefaultInstalledFlowDelegateWithRedirectURI(pub String); +impl InstalledFlowDelegate for DefaultInstalledFlowDelegateWithRedirectURI { + fn redirect_uri(&self) -> Option<&str> { Some(self.0.as_str()) } +} diff --git a/src/installed.rs b/src/installed.rs index bba20b2..89a8de3 100644 --- a/src/installed.rs +++ b/src/installed.rs @@ -91,6 +91,15 @@ pub struct InstalledFlow { impl InstalledFlow { /// Create a new InstalledFlow with the provided secret and method. + /// + /// In order to specify the redirect URL to use (in the case of `HTTPRedirect` or + /// `HTTPPortRedirect` as method), either implement the `InstalledFlowDelegate` trait, or + /// use the `DefaultInstalledFlowDelegateWithRedirectURI`, which presents the URL on stdout. + /// The redirect URL to use is configured with the OAuth provider, and possible options are + /// given in the `ApplicationSecret.redirect_uris` field. + /// + /// The `InstalledFlowDelegate` implementation should be assigned to the `flow_delegate` field + /// of the `InstalledFlow` struct. pub(crate) fn new( app_secret: ApplicationSecret, method: InstalledFlowReturnMethod, From 24d1d8c429407c88cb7168cfb220e993c647fdaf Mon Sep 17 00:00:00 2001 From: William Ho Date: Fri, 17 Feb 2023 14:06:18 -0500 Subject: [PATCH 02/12] Set default expires_at if only ID token is returned Was running into an issue where ID tokens were being used by the authenticator even after the 1-hour validity period, and weren't being refreshed. After enabling debug logs, I found out that this was happening because ID-token-only responses don't contain the `expires_in` field, so the authenticator assumes it doesn't expire. Interestingly, this doesn't happen when using the service account impersonation flow, because it's explicitly handled there by defaulting the expiration to 1 hour. The ID token is a JWT so it's possible to decode it to get the expiration date, but to avoid introducing a JWT decoding dependency, I've gone for the same approach of defaulting to 1 hour, as indicated in the GCP docs. --- src/types.rs | 49 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/src/types.rs b/src/types.rs index a2bfa5c..ba84b41 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1,7 +1,7 @@ use crate::error::{AuthErrorOr, Error}; -use time::OffsetDateTime; use serde::{Deserialize, Serialize}; +use time::OffsetDateTime; /// Represents a token returned by oauth2 servers. All tokens are Bearer tokens. Other types of /// tokens are not supported. @@ -12,7 +12,6 @@ pub struct AccessToken { } impl AccessToken { - /// A string representation of the access token. pub fn token(&self) -> Option<&str> { self.access_token.as_deref() @@ -30,7 +29,9 @@ impl AccessToken { pub fn is_expired(&self) -> bool { // Consider the token expired if it's within 1 minute of it's expiration time. self.expires_at - .map(|expiration_time| expiration_time - time::Duration::minutes(1) <= OffsetDateTime::now_utc()) + .map(|expiration_time| { + expiration_time - time::Duration::minutes(1) <= OffsetDateTime::now_utc() + }) .unwrap_or(false) } } @@ -106,8 +107,19 @@ impl TokenInfo { _ => (), } - let expires_at = expires_in - .map(|seconds_from_now| OffsetDateTime::now_utc() + time::Duration::seconds(seconds_from_now)); + let expires_at = match expires_in { + Some(seconds_from_now) => { + Some(OffsetDateTime::now_utc() + time::Duration::seconds(seconds_from_now)) + } + None if id_token.is_some() && access_token.is_none() => { + // If the response contains only an ID token, an expiration date may not be + // returned. According to the docs, the tokens are always valid for 1 hour. + // + // https://cloud.google.com/iam/docs/create-short-lived-credentials-direct#sa-credentials-oidc + Some(OffsetDateTime::now_utc() + time::Duration::HOUR) + } + None => None, + }; Ok(TokenInfo { id_token, @@ -120,7 +132,9 @@ impl TokenInfo { /// Returns true if we are expired. pub fn is_expired(&self) -> bool { self.expires_at - .map(|expiration_time| expiration_time - time::Duration::minutes(1) <= OffsetDateTime::now_utc()) + .map(|expiration_time| { + expiration_time - time::Duration::minutes(1) <= OffsetDateTime::now_utc() + }) .unwrap_or(false) } } @@ -183,4 +197,27 @@ pub mod tests { ), } } + + #[test] + fn default_expiry_for_id_token_only() { + // If only an ID token is present, set a default expiration date + let json = r#"{"id_token": "id"}"#; + + let token = TokenInfo::from_json(json.as_bytes()).unwrap(); + assert_eq!(token.id_token, Some("id".to_owned())); + + let expiry = token.expires_at.unwrap(); + assert!(expiry <= time::OffsetDateTime::now_utc() + time::Duration::HOUR); + } + + #[test] + fn no_default_expiry_for_access_token() { + // Don't set a default expiration date if an access token is returned + let json = r#"{"access_token": "access", "id_token": "id"}"#; + + let token = TokenInfo::from_json(json.as_bytes()).unwrap(); + assert_eq!(token.access_token, Some("access".to_owned())); + assert_eq!(token.id_token, Some("id".to_owned())); + assert_eq!(token.expires_at, None); + } } From 194f6a3b1d024aac5533c30915ef5363c841535a Mon Sep 17 00:00:00 2001 From: Lewin Bormann Date: Sat, 1 Apr 2023 07:54:19 +0200 Subject: [PATCH 03/12] Remove misleading old examples --- README.md | 12 ---- examples/auth.rs-usage.gif | Bin 142286 -> 0 bytes examples/auth.rs-usage.ttyrec | Bin 4643 -> 0 bytes examples/old/auth.rs | 112 ---------------------------------- 4 files changed, 124 deletions(-) delete mode 100644 examples/auth.rs-usage.gif delete mode 100644 examples/auth.rs-usage.ttyrec delete mode 100644 examples/old/auth.rs diff --git a/README.md b/README.md index aae16f6..06fce0a 100644 --- a/README.md +++ b/README.md @@ -27,18 +27,6 @@ doesn't, please let us know and/or contribute a fix! * Service account flow: Non-interactive authorization of server-to-server communication based on public key cryptography. Used for services like Cloud Pubsub, Cloud Storage, ... -### Usage - -Please have a look at the [API landing page][API-docs] for all the examples you will ever need. - -A simple commandline program which authenticates any scope and prints token information can be found -in [the examples directory][examples]. - -The video below shows the *auth* example in action. It's meant to be used as utility to record all -server communication and improve protocol compliance. - -![usage][auth-usage] - ## Versions * Version 1.x for Hyper versions below 12 diff --git a/examples/auth.rs-usage.gif b/examples/auth.rs-usage.gif deleted file mode 100644 index 475c10cfcbb40a2adaac0aded79c625bdec40806..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142286 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ⅆ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 C4n#Qs diff --git a/examples/auth.rs-usage.ttyrec b/examples/auth.rs-usage.ttyrec deleted file mode 100644 index ef97b7a2c7c12d9410a8315da4b5cf876e70f3ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4643 zcmd5=-H#hr6`!oLiQ{B85)lZ=h28`u+o(JC%-CM9-DbnC?cKHa!@KslWMd&~*1kKQ z?0k6V!~0PoBvc4O0*MD`RRxexrTzg0wBiBfq3S~)ApKAf6o|+J0!5&Thf*FuoO8$a zuB%Y>p=x7Up81`7&$;KGd%mvkTzpq~>}8&Nj^ns!T{5Hfw0SXFm(%cuNHobO_u&bD z2lUzcE6;U7A0C(Q=^`iLtpo(=sf29a|M4x-e}|XEq`BvJ1Y7mJw%i*?nwsuqpMXKh zG*#E54!kDK%Q!t@-oN!c@T2tL2c#xV0N#4NIi@b3UmGI&*LN3XmAr0=er z;En+)hG6``DK|P2$-E#Zk-Co2o~Ns;Ro=dW3mK zS0*lXx_Xnkpj(wv()PTLn~ld?v`Y=ULmfA!*|uiTSkpG+d$#ZS8#L}vO-KKMJvCIT zp>{e3N{9XO5!GsaL@C`wT=Vr-Z^JzeLB^M0aa4(q@R2gJqMPL-7;|6~LC{-$TYzE6 zU?TwRO#&J^WJn*z=K`Ngn-2B*yn!79u{h;}pF{gFu7`>aY<~OB=p&OW&=ce5PH@kn zV`8v8Bv(kiT)`4rkUT!_gn??zgBrbrf$#-@M-s+eAWgp!;=T|>&_;7h(BXtsr`gVu zMzp>dtioY>cEe;}NXJ@AuU}{Hq zS&(74_9HFkcMMx?!TGS=Ce3N4JxGrkwgzT`>@#dTdAesk{&!%xZ$L^z6Em*BTp&T3 z1>XP*C(v4%-0xxHpMQCZJ04hz;rG7B58-xxYzRMgYZ$-%_}RhuJ0S1%?{Gu-sRzS& zcKg`S_?>?ZXbAhy4ddkL<3r=dygI8 zKBDPeY7w^yRnUzQrLDUJzLxC~HOM4Ao$i57FMv+#wolq>ml97mDeo0!Uqa!iyYIhiI;ic(e-u|BsTGqqI@D)0x3P=NC`TNSoy>K4{;RJmW@gLR%tJ5c3`Zh>7)R^pk3AlFUcVh-)vTa@Ui{fuFd7U<^^75D@5=@zLeIT%DOE`t^! z=uQ-1vB*XRXFBSDgvoxoqXtLGFr^+irCB0y)3)go2LZkYXM8RKPyD$M7ZaUO$4_1-lJ4z$F3yA{bpru zdlG~)l^fn(2l}@Qvrx9E15~=(f!5D$s9yHS$t!U3;#4+~ie+RuotCeYuLb6~`}wg) zrg6aIDXU|j;w1w$&_IJ;&w%jz0FU$xCxLYEO3>*WVE{jSl?yHz21R)D%fY?EMX>r_ zaIaus{ZGNwgy4wzewbYrn24L7In9853P%3;1kZpL0q~C>aojlw8A$Gfax1Y5k$D=1 zBdPG={egs$w9q3(>sKYnfJpi#kb0K{ga?H%cNS#g3^AE$;}dRAIJ7hu=5lc1SS?o- z61U^Q%?d?Xh%8iK-n@JPoS-xZ*#5HMT?-!Z6#ysaUg zC2DCN^jT6e$>$(*B45K$r})glt~ zkVF(A&ts~eUsl-EJP7K|gSs$BH(0VDkR!x&HkBF7yT-Hxv$I1M`d1-P)V1`@O(qNf zoH*=ISWCaigF8L_E1r38(C9IL>^Yr*!{Y5n=l>1V=RYH#X6iu=&V>f42jP) -> ! { - if err.is_some() { - println!("{}", err.unwrap()); - std::process::exit(1); - } - println!("{}", opts.short_usage(program) + " SCOPE [SCOPE ...]"); - println!( - "{}", - opts.usage( - "A program to authenticate against oauthv2 services.\n\ - See https://developers.google.com/youtube/registering_an_application\n\ - and https://developers.google.com/youtube/v3/guides/authentication#devices" - ) - ); - - std::process::exit(0); -} - -fn main() { - let args: Vec = env::args().collect(); - let prog = args[0].clone(); - - let mut opts = Options::new(); - opts.opt( - "c", - "id", - "oauthv2 ID of your application", - "CLIENT_ID", - HasArg::Yes, - Occur::Req, - ) - .opt( - "s", - "secret", - "oauthv2 secret of your application", - "CLIENT_SECRET", - HasArg::Yes, - Occur::Req, - ); - - let m = match opts.parse(&args[1..]) { - Ok(m) => m, - Err(e) => { - usage(&prog, &opts, Some(e)); - } - }; - - if m.free.len() == 0 { - let msg = Fail::ArgumentMissing( - "you must provide one or more authorization scopes as free options".to_string(), - ); - usage(&prog, &opts, Some(msg)); - } - - let secret = oauth2::ApplicationSecret { - client_id: m.opt_str("c").unwrap(), - client_secret: m.opt_str("s").unwrap(), - token_uri: Default::default(), - auth_uri: Default::default(), - redirect_uris: Default::default(), - ..Default::default() - }; - - println!("THIS PROGRAM PRINTS ALL COMMUNICATION TO STDERR !!!"); - - struct StdoutHandler; - impl oauth2::AuthenticatorDelegate for StdoutHandler { - fn present_user_code(&mut self, pi: &oauth2::PollInformation) { - println!( - "Please enter '{}' at {} and authenticate the application for the\n\ - given scopes. This is not a test !\n\ - You have time until {} to do that. - Do not terminate the program until you deny or grant access !", - pi.user_code, - pi.verification_url, - pi.expires_at.with_timezone(&Local) - ); - let delay = Duration::from_secs(5); - println!("Browser opens automatically in {:?} seconds", delay); - sleep(delay); - open::that(&pi.verification_url).ok(); - println!("DONE - waiting for authorization ..."); - } - } - - let https = HttpsConnector::new(4).unwrap(); - let client = hyper::Client::builder().build(https); - - match oauth2::Authenticator::new(&secret, StdoutHandler, client, oauth2::NullStorage, None) - .token(&m.free) - { - Ok(t) => { - println!("Authentication granted !"); - println!("You should store the following information for use, or revoke it."); - println!("All dates are given in UTC."); - println!("{:?}", t); - } - Err(err) => { - println!("Access token wasn't obtained: {}", err); - std::process::exit(10); - } - }; -} From 54d8c3f2aad71fdea1de9c7b315e0d81322e093c Mon Sep 17 00:00:00 2001 From: Lewin Bormann Date: Sat, 1 Apr 2023 07:57:30 +0200 Subject: [PATCH 04/12] Update build status badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 06fce0a..3a059c1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Build -Status](https://travis-ci.org/dermesser/yup-oauth2.svg)](https://travis-ci.org/dermesser/yup-oauth2) +Status](https://github.com/dermesser/yup-oauth2/actions/workflows/test.yml/badge.svg)](https://github.com/dermesser/yup-oauth2/actions) [![codecov](https://codecov.io/gh/dermesser/yup-oauth2/branch/master/graph/badge.svg)](https://codecov.io/gh/dermesser/yup-oauth2) [![crates.io](https://img.shields.io/crates/v/yup-oauth2.svg)](https://crates.io/crates/yup-oauth2) From 3cd4d30faf7b865ef4e79e82d981533e1deba46a Mon Sep 17 00:00:00 2001 From: Lewin Bormann Date: Sat, 1 Apr 2023 07:58:31 +0200 Subject: [PATCH 05/12] Remove codecov badge (project deactivated there) --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 3a059c1..e3dcf6e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ [![Build Status](https://github.com/dermesser/yup-oauth2/actions/workflows/test.yml/badge.svg)](https://github.com/dermesser/yup-oauth2/actions) -[![codecov](https://codecov.io/gh/dermesser/yup-oauth2/branch/master/graph/badge.svg)](https://codecov.io/gh/dermesser/yup-oauth2) [![crates.io](https://img.shields.io/crates/v/yup-oauth2.svg)](https://crates.io/crates/yup-oauth2) **yup-oauth2** is a utility library which implements several OAuth 2.0 flows. It's mainly used by From e7ca443ccacb279d5b04217162d7c6c724472b6f Mon Sep 17 00:00:00 2001 From: Lewin Bormann Date: Sat, 1 Apr 2023 08:00:26 +0200 Subject: [PATCH 06/12] Minor release v8.1.1 with some doc updates --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 90967a2..2110244 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "yup-oauth2" -version = "8.1.0" +version = "8.1.1" authors = ["Sebastian Thiel ", "Lewin Bormann "] repository = "https://github.com/dermesser/yup-oauth2" description = "An oauth2 implementation, providing the 'device', 'service account' and 'installed' authorization flows" From 5615bd71d7afb8d8bc8d0727384753f3e4aba8ce Mon Sep 17 00:00:00 2001 From: Audun Skaugen Date: Wed, 12 Apr 2023 14:11:22 +0200 Subject: [PATCH 07/12] Bump hyper-rustls --- Cargo.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 90967a2..5627a9a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,12 +37,12 @@ base64 = "0.13.0" futures = "0.3" http = "0.2" hyper = { version = "0.14", features = ["client", "server", "tcp", "http2"] } -hyper-rustls = { version = "0.23", optional = true, features = ["http2"] } +hyper-rustls = { version = "0.24", optional = true, features = ["http2"] } hyper-tls = { version = "0.5.0", optional = true } itertools = "0.10.0" log = "0.4" percent-encoding = "2" -rustls = { version = "0.20.4", optional = true } +rustls = { version = "0.21.0", optional = true } rustls-pemfile = { version = "1.0.1", optional = true } seahash = "4" serde = {version = "1.0", features = ["derive"]} @@ -57,7 +57,7 @@ httptest = "0.15" env_logger = "0.10" tempfile = "3.1" webbrowser = "0.8" -hyper-rustls = "0.23" +hyper-rustls = "0.24" [workspace] members = ["examples/test-installed/", "examples/test-svc-acct/", "examples/test-device/", "examples/test-adc"] From 25ff38107780a1f2280b529e60a378c2f23cc819 Mon Sep 17 00:00:00 2001 From: Lewin Bormann Date: Thu, 13 Apr 2023 07:59:30 +0200 Subject: [PATCH 08/12] Release v8.2 with new hyper-rustls --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 9e85a21..c3309be 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "yup-oauth2" -version = "8.1.1" +version = "8.2.0" authors = ["Sebastian Thiel ", "Lewin Bormann "] repository = "https://github.com/dermesser/yup-oauth2" description = "An oauth2 implementation, providing the 'device', 'service account' and 'installed' authorization flows" From 098fb246a40c61516c00c4689c4368a10f466c0f Mon Sep 17 00:00:00 2001 From: Sanath Govindarajan Date: Tue, 18 Apr 2023 14:13:00 -0500 Subject: [PATCH 09/12] re-export hyper-rustls dependency --- src/lib.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 56d4acd..bbe971f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -93,6 +93,8 @@ pub mod storage; mod types; +pub use hyper_rustls; + #[cfg(feature = "service_account")] #[doc(inline)] pub use crate::authenticator::ServiceAccountAuthenticator; From e69841a170f44cb8a9969a4ab1cfb672e7d9d224 Mon Sep 17 00:00:00 2001 From: Sanath Govindarajan Date: Tue, 18 Apr 2023 14:16:27 -0500 Subject: [PATCH 10/12] re-export hyper dependency --- src/lib.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib.rs b/src/lib.rs index bbe971f..c723cd3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -93,6 +93,7 @@ pub mod storage; mod types; +pub use hyper; pub use hyper_rustls; #[cfg(feature = "service_account")] From 53e00e59904f788c2a7be8c53c9623d454b4a1d6 Mon Sep 17 00:00:00 2001 From: Sanath Govindarajan Date: Sat, 22 Apr 2023 12:27:03 -0500 Subject: [PATCH 11/12] gate hyper-rustls re-export on feature hyper-rustls --- src/lib.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index c723cd3..0fb0b21 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -94,6 +94,8 @@ pub mod storage; mod types; pub use hyper; + +#[cfg(feature = "hyper-rustls")] pub use hyper_rustls; #[cfg(feature = "service_account")] From 3cc35783e8f36980695a49ab7806753f1cee5c51 Mon Sep 17 00:00:00 2001 From: Lewin Bormann Date: Sat, 22 Apr 2023 20:20:05 +0200 Subject: [PATCH 12/12] Release v8.3.0 With #202 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index c3309be..d75d935 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "yup-oauth2" -version = "8.2.0" +version = "8.3.0" authors = ["Sebastian Thiel ", "Lewin Bormann "] repository = "https://github.com/dermesser/yup-oauth2" description = "An oauth2 implementation, providing the 'device', 'service account' and 'installed' authorization flows"