1#ifndef TENDUKE_OIDC_OIDCSESSIONIMPL_H
2#define TENDUKE_OIDC_OIDCSESSIONIMPL_H
4#include "./OIDCLogin.h"
5#include "./OIDCSession.h"
6#include "./OIDCSessionEventListener.h"
7#include "../OIDCState.h"
8#include "../OIDCClient.h"
14namespace tenduke {
namespace oidc {
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,
56 std::shared_ptr<const tenduke::oidc::OIDCState>
getOIDCState()
override;
73 std::shared_ptr<tenduke::oidc::OIDCState>
state;
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;
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 APIRequest.h:4