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" 
   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;
 
 
OIDCSessionImpl(std::unique_ptr< tenduke::oidc::OIDCState > state, const std::shared_ptr< const tenduke::oidc::OIDCLogin > &oidc, const std::shared_ptr< const tenduke::oidc::OIDCClient > &oidcClient, const std::shared_ptr< tenduke::time::Clock > &clock, const std::shared_ptr<::tenduke::oidc::OIDCSessionEventListener > &eventListener=nullptr, uint64_t validitySafetyMarginS=DEFAULT_SAFETY_MARGIN_S, std::chrono::milliseconds loginTimeout=DEFAULT_SESSION_LOGIN_TIMEOUT)
Constructs new instance.
Definition OIDCSessionImpl.cpp:172
 
virtual void login()
Performs login.
Definition OIDCSessionImpl.cpp:99
 
bool heartbeat() override
Executes a heartbeat with the backend, checking that the current access token really works.
Definition OIDCSessionImpl.cpp:154
 
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:52
 
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:57
 
virtual void refreshOrLogin()
Performs either refresh, or if it fails, new login.
Definition OIDCSessionImpl.cpp:78
 
virtual bool hasRefreshableState()
Checks if the session has state, which can be refreshed.
Definition OIDCSessionImpl.cpp:23
 
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:41
 
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:143
 
std::string getAccessToken() override
Returns access token of the session.
Definition OIDCSessionImpl.cpp:28
 
const std::shared_ptr< const tenduke::oidc::OIDCClient > oidcClient
The OIDC-client.
Definition OIDCSessionImpl.h:88
 
OIDCSessionImpl(std::unique_ptr< tenduke::oidc::OIDCState > state, const std::shared_ptr< const tenduke::oidc::OIDCLogin > &oidc, const std::shared_ptr< const tenduke::oidc::OIDCClient > &oidcClient, const std::shared_ptr< tenduke::time::Clock > &clock, const std::shared_ptr<::tenduke::oidc::OIDCSessionEventListener > &eventListener=nullptr, uint64_t validitySafetyMarginS=DEFAULT_SAFETY_MARGIN_S, std::chrono::milliseconds loginTimeout=DEFAULT_SESSION_LOGIN_TIMEOUT)
Constructs new instance.
Definition OIDCSessionImpl.cpp:172
 
std::shared_ptr< const tenduke::oidc::OIDCState > getOIDCState() override
Returns the current OIDC-state for inspection.
Definition OIDCSessionImpl.cpp:36
 
void reEstablish() override
Re-establishes the session: Tries first to refresh the state, if it fails, re-authenticates the user.
Definition OIDCSessionImpl.cpp:138
 
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
 
Implementation of OpenID Connect protocol.
Definition AutoDiscovery.h:18
 
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