pub struct Client {
pub oauth2: Client<BasicErrorResponse, BasicTokenResponse, BasicTokenIntrospectionResponse, StandardRevocableToken, BasicRevocationErrorResponse, EndpointSet, EndpointNotSet, EndpointNotSet, EndpointNotSet, EndpointMaybeSet>,
pub profile_url: Url,
pub http_client: Client,
pub flow_states: HashMap<String, (PkceCodeVerifier, Instant)>,
pub scopes: Vec<Scope>,
pub csrf_token_timeout: Duration,
pub cookie_config: CookieConfig,
}Expand description
Client that acts as a client for the Authorization Code
Grant flow.
Fields§
§oauth2: Client<BasicErrorResponse, BasicTokenResponse, BasicTokenIntrospectionResponse, StandardRevocableToken, BasicRevocationErrorResponse, EndpointSet, EndpointNotSet, EndpointNotSet, EndpointNotSet, EndpointMaybeSet>BasicClient instance for the OAuth2 client.
profile_url: UrlUrl instance for the OAuth2 client’s profile URL.
http_client: Clientreqwest::Client instance for the OAuth2 client’s HTTP client.
flow_states: HashMap<String, (PkceCodeVerifier, Instant)>A flow states hashMap <CSRF Token, (PKCE Code Verifier, Created time)> for managing the expiration of the CSRF tokens and PKCE code verifiers.
scopes: Vec<Scope>A vector of Scope for the getting the user’s profile.
csrf_token_timeout: DurationA std::time::Duration for the OAuth2 client’s CSRF token timeout
which defaults to 10 minutes (600s).
An optional CookieConfig for the OAuth2 client’s
cookie during middleware
Implementations§
Source§impl Client
impl Client
Sourcepub fn new(
credentials: Credentials,
config: UrlConfig,
cookie_config: CookieConfig,
timeout_seconds: Option<u64>,
) -> OAuth2ClientResult<Self>
pub fn new( credentials: Credentials, config: UrlConfig, cookie_config: CookieConfig, timeout_seconds: Option<u64>, ) -> OAuth2ClientResult<Self>
Create a new instance of [OAuth2Client].
§Arguments
credentials- ACredentialsstruct that holds theOAuth2client credentials.config- AUrlConfigstruct that holds theOAuth2client related URLs.timeout_seconds- An optional timeout in seconds for the csrf token. Defaults to 10 minutes (600s).
§Returns
A Client instance
§Errors
OAuth2ClientError::UrlError if the auth_url, token_url,
redirect_url or profile_url is invalid.
§Example
ⓘ
let credentials = AuthorizationCodeCredentials {
client_id: "test_client_id".to_string(),
client_secret: Some("test_client_secret".to_string()),
};
let config = AuthorizationCodeUrlConfig {
auth_url: "https://accounts.google.com/o/oauth2/v2/auth".to_string(),
token_url: Some("https://www.googleapis.com/oauth2/v3/token".to_string()),
redirect_url: "http://localhost:8000/api/auth/google_callback".to_string(),
profile_url: "https://openidconnect.googleapis.com/v1/userinfo".to_string(),
scopes: vec!["https://www.googleapis.com/auth/userinfo.email".to_string()],
};
let client = AuthorizationCodeClient::new(credentials, config, None)?;Trait Implementations§
Source§impl GrantTrait for Client
impl GrantTrait for Client
Get authorization code client Read more
Get
AuthorizationCodeCookieConfig instance Read moreGet authorization URL Read more
Source§fn verify_code_from_callback<'life0, 'async_trait>(
&'life0 mut self,
code: String,
state: String,
csrf_token: String,
) -> Pin<Box<dyn Future<Output = OAuth2ClientResult<(BasicTokenResponse, Response)>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn verify_code_from_callback<'life0, 'async_trait>(
&'life0 mut self,
code: String,
state: String,
csrf_token: String,
) -> Pin<Box<dyn Future<Output = OAuth2ClientResult<(BasicTokenResponse, Response)>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Verify code from the provider callback request after returns from the
OAuth2 provider’s login page. Read moreAuto Trait Implementations§
impl Freeze for Client
impl !RefUnwindSafe for Client
impl Send for Client
impl Sync for Client
impl Unpin for Client
impl !UnwindSafe for Client
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more