10Duke Scale C++ Client
Loading...
Searching...
No Matches
OIDCSessionImpl.h
1#ifndef TENDUKE_OIDC_OIDCSESSIONIMPL_H
2#define TENDUKE_OIDC_OIDCSESSIONIMPL_H
3
4#include "./OIDCLogin.h"
5#include "./OIDCSession.h"
6#include "./OIDCSessionEventListener.h"
7#include "../OIDCState.h"
8#include "../OIDCClient.h"
9#include "time/Clock.h"
10
11#include <memory>
12#include <cstdint>
13
14namespace tenduke { namespace oidc {
15
17const std::chrono::milliseconds DEFAULT_SESSION_LOGIN_TIMEOUT = std::chrono::minutes(6);
18
23{
24public:
26 static const std::uint64_t DEFAULT_SAFETY_MARGIN_S;
27
43 std::unique_ptr<tenduke::oidc::OIDCState> state,
44 const std::shared_ptr<const tenduke::oidc::OIDCLogin> &oidc,
45 const std::shared_ptr<const tenduke::oidc::OIDCClient> &oidcClient,
46 const std::shared_ptr<tenduke::time::Clock> &clock,
47 const std::shared_ptr<::tenduke::oidc::OIDCSessionEventListener> &eventListener = nullptr,
49 std::chrono::milliseconds loginTimeout = DEFAULT_SESSION_LOGIN_TIMEOUT
50 );
51
52 // tenduke::oidc::OIDCSession
53public:
54 void ensureValidSession() override;
55 std::string getAccessToken() override;
56 std::shared_ptr<const tenduke::oidc::OIDCState> getOIDCState() override;
57 bool heartbeat() override;
58 void invalidate() override;
59 bool isValid() override;
60 void reEstablish() override;
61 void refresh() override;
62
63protected:
65 virtual bool hasRefreshableState();
67 virtual void refreshOrLogin();
69 virtual void login();
70
71protected:
73 std::shared_ptr<tenduke::oidc::OIDCState> state;
75 std::unique_ptr<tenduke::oidc::OIDCLoginRequest> loginRequest;
77 const std::chrono::milliseconds loginTimeout;
81 const std::uint64_t validitySafetyMarginS;
82
84 const std::shared_ptr<tenduke::time::Clock> clock;
86 const std::shared_ptr<const tenduke::oidc::OIDCLogin> oidc;
88 const std::shared_ptr<const tenduke::oidc::OIDCClient> oidcClient;
90 const std::shared_ptr<tenduke::oidc::OIDCSessionEventListener> notify;
91};
92
93}}
94
95#endif //TENDUKE_OIDC_OIDCSESSIONIMPL_H
Default implementation of tenduke::oidc::OIDCSession.
Definition OIDCSessionImpl.h:23
virtual void login()
Performs login.
Definition OIDCSessionImpl.cpp:97
bool heartbeat() override
Executes a heartbeat with the backend, checking that the current access token really works.
Definition OIDCSessionImpl.cpp:152
std::shared_ptr< tenduke::oidc::OIDCState > state
The OIDC-state.
Definition OIDCSessionImpl.h:73
const std::shared_ptr< tenduke::oidc::OIDCSessionEventListener > notify
Listener for OIDC session events.
Definition OIDCSessionImpl.h:90
const std::chrono::milliseconds loginTimeout
Login timeout.
Definition OIDCSessionImpl.h:77
const std::uint64_t validitySafetyMarginS
Safety margin in seconds for checking if access token has expired.
Definition OIDCSessionImpl.h:81
void invalidate() override
Invalidates the session.
Definition OIDCSessionImpl.cpp:50
static const std::uint64_t DEFAULT_SAFETY_MARGIN_S
Default safety margin in seconds for checking access token expiration.
Definition OIDCSessionImpl.h:26
bool isValid() override
Checks that local session is valid.
Definition OIDCSessionImpl.cpp:55
virtual void refreshOrLogin()
Performs either refresh, or if it fails, new login.
Definition OIDCSessionImpl.cpp:76
virtual bool hasRefreshableState()
Checks if the session has state, which can be refreshed.
Definition OIDCSessionImpl.cpp:21
void ensureValidSession() override
Checks that the OIDC session is valid, but if it is NOT, either refreshes the access token or authent...
Definition OIDCSessionImpl.cpp:39
const std::shared_ptr< tenduke::time::Clock > clock
Clock for checking session validity locally.
Definition OIDCSessionImpl.h:84
void refresh() override
Forces refresh of the session.
Definition OIDCSessionImpl.cpp:141
std::string getAccessToken() override
Returns access token of the session.
Definition OIDCSessionImpl.cpp:26
const std::shared_ptr< const tenduke::oidc::OIDCClient > oidcClient
The OIDC-client.
Definition OIDCSessionImpl.h:88
std::shared_ptr< const tenduke::oidc::OIDCState > getOIDCState() override
Returns the current OIDC-state for inspection.
Definition OIDCSessionImpl.cpp:34
void reEstablish() override
Re-establishes the session: Tries first to refresh the state, if it fails, re-authenticates the user.
Definition OIDCSessionImpl.cpp:136
std::unique_ptr< tenduke::oidc::OIDCLoginRequest > loginRequest
Current login request.
Definition OIDCSessionImpl.h:75
const std::shared_ptr< const tenduke::oidc::OIDCLogin > oidc
Service to perform OIDC login.
Definition OIDCSessionImpl.h:86
Stateful service to manage OIDC-session.
Definition OIDCSession.h:23
const std::chrono::milliseconds DEFAULT_SESSION_LOGIN_TIMEOUT
Default login timeout.
Definition OIDCSessionImpl.h:17
Root for classes, functions and globals of 10Duke C++ Client.
Definition BackendConfiguration.h:7