10Duke Scale C++ Client
Loading...
Searching...
No Matches
DefaultOIDCBrowserFlow.h
1#ifndef TENDUKE_OIDC_DEFAULTOIDCBROWSERFLOW_H
2#define TENDUKE_OIDC_DEFAULTOIDCBROWSERFLOW_H
3
4#include "./BaseOIDCClient.h"
5#include "./DefaultOIDCBrowserFlowAuthenticationRequest.h"
6#include "./DefaultOIDCRefreshRequest.h"
7#include "../OIDCBrowserFlow.h"
8#include "../OIDCConfiguration.h"
9#include "../../oauth/OAuthBrowserFlow.h"
10
11#include "http/HTTPClient.h"
12#include "jwt/JWTParser.h"
13#include "utl/random/RandomURLSafeString.h"
14
15#include <memory>
16#include <string>
17#include <utility>
18#include <utility>
19
20namespace tenduke { namespace oidc {
21
22
28 , public virtual tenduke::oidc::OIDCBrowserFlow
29{
30public:
32 static const std::size_t DEFAULT_NONCE_LENGTH = 32;
33
34public:
45 const std::shared_ptr<const tenduke::oidc::OIDCConfiguration> &oidcConfiguration,
46 const std::shared_ptr<const tenduke::oauth::OAuthBrowserFlow> &oauthClient,
47 const std::shared_ptr<tenduke::utl::random::RandomUrlSafeString> &randomUrlSafeString,
48 const std::shared_ptr<const tenduke::jwt::JWTParser> &jwtParser,
49 const std::shared_ptr<const tenduke::http::HTTPClient> &httpClient,
50 size_t nonceLength = DEFAULT_NONCE_LENGTH
51 );
52 //`tenduke::oidc::BrowserOIDCClient interface`
53public:
54 std::unique_ptr<const tenduke::oidc::OIDCBrowserFlowAuthenticationRequest> authenticate(const std::string &scopes) const override;
55 std::unique_ptr<const tenduke::oidc::OIDCBrowserFlowAuthenticationRequest> authenticate(
56 const std::string &scopes,
57 const std::map<std::string, std::string> &additionalParameters
58 ) const override;
59
60protected:
65 std::string generateNonce() const;
66
67private:
68 const std::shared_ptr<const tenduke::oauth::OAuthBrowserFlow> oauthClient;
69 const std::shared_ptr<tenduke::utl::random::RandomUrlSafeString> randomUrlSafeString;
70
71 const size_t nonceLength;
72};
73
74
75}}
76
77#endif // TENDUKE_OIDC_DEFAULTOIDCBROWSERFLOW_H
Base-class for OIDC-clients.
Definition BaseOIDCClient.h:22
const std::shared_ptr< const tenduke::oidc::OIDCConfiguration > oidcConfiguration
OIDC-configuration.
Definition BaseOIDCClient.h:71
Default implementation of browser-based OIDC-client.
Definition DefaultOIDCBrowserFlow.h:29
static const std::size_t DEFAULT_NONCE_LENGTH
Default nonce length.
Definition DefaultOIDCBrowserFlow.h:32
std::string generateNonce() const
Generates nonce.
Definition DefaultOIDCBrowserFlow.cpp:36
std::unique_ptr< const tenduke::oidc::OIDCBrowserFlowAuthenticationRequest > authenticate(const std::string &scopes) const override
Creates OIDCRequest which performs the OIDC-authentication.
Definition DefaultOIDCBrowserFlow.cpp:29
OpenID Connect -client.
Definition OIDCBrowserFlow.h:22
Root for classes, functions and globals of 10Duke C++ Client.
Definition BackendConfiguration.h:7