1#ifndef TENDUKE_OAUTH_PKCE_OAUTHPKCEREQUEST_H
2#define TENDUKE_OAUTH_PKCE_OAUTHPKCEREQUEST_H
4#include "../OAuthBrowserAuthorizationRequest.h"
5#include "../OAuthConfiguration.h"
6#include "../OAuthTokenRequest.h"
7#include "../OAuthState.h"
9#include "crypto/MessageDigestFactory.h"
10#include "http/HTTPClient.h"
11#include "json/JSONParser.h"
12#include "net/URLParser.h"
13#include "time/Clock.h"
14#include "utl/Base64Encoder.h"
45 std::map<std::string, std::string> additionalParameters,
46 std::string codeVerifier,
47 std::shared_ptr<const tenduke::oauth::OAuthConfiguration> config,
48 std::shared_ptr<const tenduke::http::HTTPClient> httpClient,
49 std::shared_ptr<const tenduke::net::URLParser> urlParser,
50 std::shared_ptr<const tenduke::json::JSONParser> jsonParser,
51 std::shared_ptr<const tenduke::utl::Base64Encoder> base64Encoder,
52 std::shared_ptr<const tenduke::crypto::MessageDigestFactory> messageDigestFactory,
53 std::shared_ptr<tenduke::time::Clock> clock
59 std::unique_ptr<tenduke::oauth::OAuthState>
handleCallback(
const std::string &redirectUri)
const override;
87 virtual std::unique_ptr<tenduke::oauth::OAuthState>
handleSuccessfulCallback(
const std::multimap<std::string, std::string> &queryParameters)
const;
94 virtual std::unique_ptr<tenduke::oauth::OAuthState>
handleTokenResponse(std::unique_ptr<tenduke::oauth::OAuthTokenResponse> response)
const;
107 virtual std::unique_ptr<tenduke::oauth::OAuthTokenRequest>
createTokenRequest(
const std::string &code)
const;
110 const std::string scopes;
111 const std::string state;
112 const std::map<std::string, std::string> additionalParameters;
114 const std::string codeVerifier;
116 const std::shared_ptr<const tenduke::oauth::OAuthConfiguration> config;
117 const std::shared_ptr<const tenduke::http::HTTPClient> http;
118 const std::shared_ptr<const tenduke::net::URLParser> parseURL;
119 const std::shared_ptr<const tenduke::json::JSONParser> parseJSON;
120 const std::shared_ptr<const tenduke::utl::Base64Encoder> base64Encoder;
121 const std::shared_ptr<const tenduke::crypto::MessageDigestFactory> messageDigest;
122 const std::shared_ptr<tenduke::time::Clock> clock;
OAuth-request to handle OAuth authorization using browser.
Definition OAuthBrowserAuthorizationRequest.h:20
PKCE-implementation of tenduke::oauth::OAuthRequest.
Definition OAuthPKCERequest.h:26
virtual std::map< std::string, std::string > buildTokenRequestParameters(const std::string &code) const
Builds parameters for the token request.
Definition OAuthPKCERequest.cpp:128
virtual void createCodeChallenge(std::map< std::string, std::string > ¶meters) const
Creates PKCE code challenge and adds it to the provided parameters.
Definition OAuthPKCERequest.cpp:207
virtual bool isPKCERequest() const
Checks if this is PKCE-request.
Definition OAuthPKCERequest.cpp:166
std::unique_ptr< tenduke::oauth::OAuthState > handleCallback(const std::string &redirectUri) const override
Handles callback: performs consequent actions to authorize.
Definition OAuthPKCERequest.cpp:61
virtual std::map< std::string, std::string > buildAuthorizationRequestParameters() const
Builds parameters for the authorization request.
Definition OAuthPKCERequest.cpp:184
virtual std::unique_ptr< tenduke::oauth::OAuthTokenRequest > createTokenRequest(const std::string &code) const
Creates the token request.
Definition OAuthPKCERequest.cpp:116
virtual std::unique_ptr< tenduke::oauth::OAuthState > handleSuccessfulCallback(const std::multimap< std::string, std::string > &queryParameters) const
Handles successful callback to redirect-uri from authorization request, performing the next steps to ...
Definition OAuthPKCERequest.cpp:81
virtual std::unique_ptr< tenduke::oauth::OAuthState > handleTokenResponse(std::unique_ptr< tenduke::oauth::OAuthTokenResponse > response) const
Handles token response.
Definition OAuthPKCERequest.cpp:149
std::string buildAuthorizationRequestUrl() const override
Creates the initial authorization request URL.
Definition OAuthPKCERequest.cpp:173
OAuth services.
Definition AccessTokenRequestAuthenticator.h:8
Root for classes, functions and globals of 10Duke C++ Client.
Definition BackendConfiguration.h:7