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