1#ifndef TENDUKE_OAUTH_PKCE_OAUTHPKCEFLOW_H 
    2#define TENDUKE_OAUTH_PKCE_OAUTHPKCEFLOW_H 
    4#include "../BaseOAuthClient.h" 
    5#include "../OAuthBrowserFlow.h" 
    6#include "../OAuthConfiguration.h" 
    8#include "crypto/MessageDigestFactory.h" 
    9#include "http/HTTPClient.h" 
   10#include "json/JSONParser.h" 
   11#include "net/URLParser.h" 
   12#include "time/Clock.h" 
   13#include "utl/Base64Encoder.h" 
   14#include "utl/random/RandomURLSafeString.h" 
   49            std::shared_ptr<const tenduke::oauth::OAuthConfiguration> config,
 
   50            std::shared_ptr<const tenduke::http::HTTPClient> httpClient,
 
   51            std::shared_ptr<const tenduke::net::URLParser> urlParser,
 
   52            std::shared_ptr<const tenduke::json::JSONParser> jsonParser,
 
   53            std::shared_ptr<const tenduke::utl::Base64Encoder> base64Encoder,
 
   54            std::shared_ptr<const tenduke::crypto::MessageDigestFactory> messageDigestFactory,
 
   55            std::shared_ptr<tenduke::time::Clock> clock,
 
   56            std::shared_ptr<tenduke::utl::random::RandomUrlSafeString> randomUrlSafeString
 
   61    std::unique_ptr<const tenduke::oauth::OAuthBrowserAuthorizationRequest> 
authorize(
const std::string &scopes) 
const override;
 
   62    std::unique_ptr<const tenduke::oauth::OAuthBrowserAuthorizationRequest> 
authorize(
 
   63            const std::string &scopes,
 
   64            const std::map<std::string, std::string> &additionalParameters
 
   81    std::size_t stateLength;
 
   82    std::size_t pkceCodeVerifierLength;
 
   84    const std::shared_ptr<const OAuthConfiguration> config;
 
   85    const std::shared_ptr<const tenduke::http::HTTPClient> httpClient;
 
   86    const std::shared_ptr<const tenduke::net::URLParser> urlParser;
 
   87    const std::shared_ptr<const tenduke::json::JSONParser> jsonParser;
 
   88    const std::shared_ptr<const tenduke::utl::Base64Encoder> base64Encoder;
 
   89    const std::shared_ptr<const tenduke::crypto::MessageDigestFactory> messageDigestFactory;
 
   90    const std::shared_ptr<tenduke::time::Clock> clock;
 
   91    const std::shared_ptr<tenduke::utl::random::RandomUrlSafeString> randomUrlSafeString;
 
 
 
OAuthPKCEFlow(std::shared_ptr< const tenduke::oauth::OAuthConfiguration > config, std::shared_ptr< const tenduke::http::HTTPClient > httpClient, std::shared_ptr< const tenduke::net::URLParser > urlParser, std::shared_ptr< const tenduke::json::JSONParser > jsonParser, std::shared_ptr< const tenduke::utl::Base64Encoder > base64Encoder, std::shared_ptr< const tenduke::crypto::MessageDigestFactory > messageDigestFactory, std::shared_ptr< tenduke::time::Clock > clock, std::shared_ptr< tenduke::utl::random::RandomUrlSafeString > randomUrlSafeString)
Constructs new instance.
Definition OAuthPKCEFlow.cpp:15
 
Base class for OAuth-clients.
Definition BaseOAuthClient.h:27
 
OAuth-client to initiate OAuth authorization flow.
Definition OAuthBrowserFlow.h:40
 
std::string generateCodeVerifier() const
Generates PKCE code verifier.
Definition OAuthPKCEFlow.cpp:67
 
std::string generateState() const
Generates value for "state"-parameter.
Definition OAuthPKCEFlow.cpp:60
 
OAuthPKCEFlow(std::shared_ptr< const tenduke::oauth::OAuthConfiguration > config, std::shared_ptr< const tenduke::http::HTTPClient > httpClient, std::shared_ptr< const tenduke::net::URLParser > urlParser, std::shared_ptr< const tenduke::json::JSONParser > jsonParser, std::shared_ptr< const tenduke::utl::Base64Encoder > base64Encoder, std::shared_ptr< const tenduke::crypto::MessageDigestFactory > messageDigestFactory, std::shared_ptr< tenduke::time::Clock > clock, std::shared_ptr< tenduke::utl::random::RandomUrlSafeString > randomUrlSafeString)
Constructs new instance.
Definition OAuthPKCEFlow.cpp:15
 
std::unique_ptr< const tenduke::oauth::OAuthBrowserAuthorizationRequest > authorize(const std::string &scopes) const override
Creates OAuthRequest to start the OAuth-authorization flow.
Definition OAuthPKCEFlow.cpp:33
 
Implementation of OAuth "Authorization Code Flow with PKCE".
Definition OAuthPKCEFlow.h:21
 
const std::size_t DEFAULT_CODEVERIFIER_LENGTH
Default length of generated PKCE code verifier.
Definition OAuthPKCEFlow.h:27
 
const std::size_t DEFAULT_STATE_LENGTH
Default length of generated state-parameter.
Definition OAuthPKCEFlow.h:25
 
OAuth services.
Definition AccessTokenRequestAuthenticator.h:8
 
Root for classes, functions and globals of 10Duke C++ Client.
Definition APIRequest.h:4