10Duke Scale C++ Client
Loading...
Searching...
No Matches
SerializedOIDCSession.h
1#ifndef TENDUKE_OIDC_SERIALIZEDOIDCSESSION_H
2#define TENDUKE_OIDC_SERIALIZEDOIDCSESSION_H
3
4#include "./OIDCSession.h"
5
6#include <chrono>
7#include <memory>
8#include <mutex>
9
10namespace tenduke { namespace oidc {
11
13const std::chrono::seconds DEFAULT_SESSION_CONCURRENCY_TIMEOUT = std::chrono::minutes(5);
14
15
23{
24public:
31 const std::shared_ptr<tenduke::oidc::OIDCSession> &session,
32 const std::chrono::milliseconds &concurrencyTimeout
33 );
34
35 // tenduke::oidc::OIDCSession interface
36public:
37 void ensureValidSession() override;
38 std::string getAccessToken() override;
39 std::shared_ptr<const tenduke::oidc::OIDCState> getOIDCState() override;
40 bool heartbeat() override;
41 void invalidate() override;
42 bool isValid() override;
43 void reEstablish() override;
44 void refresh() override;
45
46private:
47 const std::shared_ptr<tenduke::oidc::OIDCSession> session;
48
49 const std::chrono::milliseconds concurrencyTimeout;
50 std::recursive_timed_mutex serializeStateAccess;
51};
52
53}}
54
55#endif //TENDUKE_OIDC_SERIALIZEDOIDCSESSION_H
Stateful service to manage OIDC-session.
Definition OIDCSession.h:23
A tenduke::oidc::OIDCSession, which guards that only one thread at a time can access the instance.
Definition SerializedOIDCSession.h:23
bool isValid() override
Checks that local session is valid.
Definition SerializedOIDCSession.cpp:69
bool heartbeat() override
Executes a heartbeat with the backend, checking that the current access token really works.
Definition SerializedOIDCSession.cpp:53
void refresh() override
Forces refresh of the session.
Definition SerializedOIDCSession.cpp:85
std::shared_ptr< const tenduke::oidc::OIDCState > getOIDCState() override
Returns the current OIDC-state for inspection.
Definition SerializedOIDCSession.cpp:45
std::string getAccessToken() override
Returns access token of the session.
Definition SerializedOIDCSession.cpp:37
void ensureValidSession() override
Checks that the OIDC session is valid, but if it is NOT, either refreshes the access token or authent...
Definition SerializedOIDCSession.cpp:29
void reEstablish() override
Re-establishes the session: Tries first to refresh the state, if it fails, re-authenticates the user.
Definition SerializedOIDCSession.cpp:77
void invalidate() override
Invalidates the session.
Definition SerializedOIDCSession.cpp:61
const std::chrono::seconds DEFAULT_SESSION_CONCURRENCY_TIMEOUT
Default timeout for serialized methods.
Definition SerializedOIDCSession.h:13
Root for classes, functions and globals of 10Duke C++ Client.
Definition BackendConfiguration.h:7