diff options
| author | Per Larsson <[email protected]> | 2022-01-28 13:03:44 +0100 |
|---|---|---|
| committer | Per Larsson <[email protected]> | 2022-01-28 13:03:44 +0100 |
| commit | c775f3f39bc2a3d8c018c3a925a7cd61231ef3a9 (patch) | |
| tree | 152399c6b8aa05e51107801431c65a938e0a788f | |
| parent | Extended auth mgr to restore OpenID provider(s) and token(s). (diff) | |
| download | zen-c775f3f39bc2a3d8c018c3a925a7cd61231ef3a9.tar.xz zen-c775f3f39bc2a3d8c018c3a925a7cd61231ef3a9.zip | |
Get access token from auth mgr.
| -rw-r--r-- | zenserver/auth/authmgr.cpp | 14 | ||||
| -rw-r--r-- | zenserver/auth/authmgr.h | 8 | ||||
| -rw-r--r-- | zenserver/upstream/upstreamcache.cpp | 11 | ||||
| -rw-r--r-- | zenserver/upstream/upstreamcache.h | 3 | ||||
| -rw-r--r-- | zenserver/upstream/upstreamservice.cpp | 6 | ||||
| -rw-r--r-- | zenserver/upstream/upstreamservice.h | 6 | ||||
| -rw-r--r-- | zenserver/zenserver.cpp | 4 |
7 files changed, 41 insertions, 11 deletions
diff --git a/zenserver/auth/authmgr.cpp b/zenserver/auth/authmgr.cpp index 20bc7c988..28e128fc0 100644 --- a/zenserver/auth/authmgr.cpp +++ b/zenserver/auth/authmgr.cpp @@ -116,6 +116,20 @@ public: return true; } + virtual OpenIdAccessToken GetOpenIdAccessToken(std::string_view ProviderName) final + { + std::unique_lock _(m_TokenMutex); + + if (auto It = m_OpenIdTokens.find(std::string(ProviderName)); It != m_OpenIdTokens.end()) + { + const OpenIdToken& Token = It->second; + + return {.AccessToken = Token.AccessToken}; + } + + return {}; + } + private: bool OpenIdProviderExist(std::string_view ProviderName) { diff --git a/zenserver/auth/authmgr.h b/zenserver/auth/authmgr.h index 16d4071bf..1138d9eff 100644 --- a/zenserver/auth/authmgr.h +++ b/zenserver/auth/authmgr.h @@ -29,7 +29,15 @@ public: std::string_view AccessToken; }; + virtual bool AddOpenIdToken(const AddOpenIdTokenParams& Params) = 0; + + struct OpenIdAccessToken + { + std::string AccessToken; + }; + + virtual OpenIdAccessToken GetOpenIdAccessToken(std::string_view ProviderName) = 0; }; struct AuthConfig diff --git a/zenserver/upstream/upstreamcache.cpp b/zenserver/upstream/upstreamcache.cpp index 3d6641a4f..68e7edfab 100644 --- a/zenserver/upstream/upstreamcache.cpp +++ b/zenserver/upstream/upstreamcache.cpp @@ -18,6 +18,7 @@ #include <zenstore/cas.h> #include <zenstore/cidstore.h> +#include <auth/authmgr.h> #include "cache/structuredcachestore.h" #include "diag/logging.h" @@ -84,8 +85,9 @@ namespace detail { class JupiterUpstreamEndpoint final : public UpstreamEndpoint { public: - JupiterUpstreamEndpoint(const CloudCacheClientOptions& Options) - : m_Log(zen::logging::Get("upstream")) + JupiterUpstreamEndpoint(const CloudCacheClientOptions& Options, AuthMgr& Mgr) + : m_AuthMgr(Mgr) + , m_Log(zen::logging::Get("upstream")) , m_UseLegacyDdc(Options.UseLegacyDdc) { ZEN_ASSERT(!Options.Name.empty()); @@ -512,6 +514,7 @@ namespace detail { spdlog::logger& Log() { return m_Log; } + AuthMgr& m_AuthMgr; spdlog::logger& m_Log; UpstreamEndpointInfo m_Info; UpstreamStatus m_Status; @@ -1481,9 +1484,9 @@ MakeUpstreamCache(const UpstreamCacheOptions& Options, ZenCacheStore& CacheStore } std::unique_ptr<UpstreamEndpoint> -MakeJupiterUpstreamEndpoint(const CloudCacheClientOptions& Options) +MakeJupiterUpstreamEndpoint(const CloudCacheClientOptions& Options, AuthMgr& Mgr) { - return std::make_unique<detail::JupiterUpstreamEndpoint>(Options); + return std::make_unique<detail::JupiterUpstreamEndpoint>(Options, Mgr); } std::unique_ptr<UpstreamEndpoint> diff --git a/zenserver/upstream/upstreamcache.h b/zenserver/upstream/upstreamcache.h index 16d8c7929..805786cdf 100644 --- a/zenserver/upstream/upstreamcache.h +++ b/zenserver/upstream/upstreamcache.h @@ -15,6 +15,7 @@ namespace zen { +class AuthMgr; class CbObjectView; class CbPackage; class CbObjectWriter; @@ -203,7 +204,7 @@ public: std::unique_ptr<UpstreamCache> MakeUpstreamCache(const UpstreamCacheOptions& Options, ZenCacheStore& CacheStore, CidStore& CidStore); -std::unique_ptr<UpstreamEndpoint> MakeJupiterUpstreamEndpoint(const CloudCacheClientOptions& Options); +std::unique_ptr<UpstreamEndpoint> MakeJupiterUpstreamEndpoint(const CloudCacheClientOptions& Options, AuthMgr& Mgr); std::unique_ptr<UpstreamEndpoint> MakeZenUpstreamEndpoint(const ZenStructuredCacheClientOptions& Options); diff --git a/zenserver/upstream/upstreamservice.cpp b/zenserver/upstream/upstreamservice.cpp index 1cfd1df85..c8176779e 100644 --- a/zenserver/upstream/upstreamservice.cpp +++ b/zenserver/upstream/upstreamservice.cpp @@ -1,9 +1,11 @@ // Copyright Epic Games, Inc. All Rights Reserved. +#include <auth/authmgr.h> #include <upstream/jupiter.h> #include <upstream/upstreamcache.h> #include <upstream/upstreamservice.h> #include <upstream/zen.h> + #include <zencore/compactbinarybuilder.h> #include <zencore/string.h> @@ -64,7 +66,7 @@ namespace { } } // namespace -HttpUpstreamService::HttpUpstreamService(UpstreamCache& Upstream) : m_Upstream(Upstream) +HttpUpstreamService::HttpUpstreamService(UpstreamCache& Upstream, AuthMgr& Mgr) : m_Upstream(Upstream), m_AuthMgr(Mgr) { m_Router.RegisterRoute( "endpoints", @@ -179,7 +181,7 @@ HttpUpstreamService::HttpUpstreamService(UpstreamCache& Upstream) : m_Upstream(U .OAuthSecret = OAuthSecret, .AccessToken = OAuthToken}; - Endpoint = zen::MakeJupiterUpstreamEndpoint(Options); + Endpoint = zen::MakeJupiterUpstreamEndpoint(Options, m_AuthMgr); } m_Upstream.RegisterEndpoint(std::move(Endpoint)); diff --git a/zenserver/upstream/upstreamservice.h b/zenserver/upstream/upstreamservice.h index 0a42198c2..f1da03c8c 100644 --- a/zenserver/upstream/upstreamservice.h +++ b/zenserver/upstream/upstreamservice.h @@ -6,20 +6,22 @@ namespace zen { +class AuthMgr; class UpstreamCache; class HttpUpstreamService final : public zen::HttpService { public: - HttpUpstreamService(UpstreamCache& Upstream); + HttpUpstreamService(UpstreamCache& Upstream, AuthMgr& Mgr); virtual ~HttpUpstreamService(); virtual const char* BaseUri() const override; virtual void HandleRequest(zen::HttpServerRequest& Request) override; private: - HttpRequestRouter m_Router; UpstreamCache& m_Upstream; + AuthMgr& m_AuthMgr; + HttpRequestRouter m_Router; }; } // namespace zen diff --git a/zenserver/zenserver.cpp b/zenserver/zenserver.cpp index 524207921..e96a4ceaa 100644 --- a/zenserver/zenserver.cpp +++ b/zenserver/zenserver.cpp @@ -701,7 +701,7 @@ ZenServer::InitializeStructuredCache(const ZenServerOptions& ServerOptions) } m_UpstreamCache = zen::MakeUpstreamCache(UpstreamOptions, *m_CacheStore, *m_CidStore); - m_UpstreamService = std::make_unique<HttpUpstreamService>(*m_UpstreamCache); + m_UpstreamService = std::make_unique<HttpUpstreamService>(*m_UpstreamCache, *m_AuthMgr); m_UpstreamCache->Initialize(); if (ServerOptions.UpstreamCacheConfig.CachePolicy != UpstreamCachePolicy::Disabled) @@ -779,7 +779,7 @@ ZenServer::InitializeStructuredCache(const ZenServerOptions& ServerOptions) if (!Options.ServiceUrl.empty()) { - std::unique_ptr<zen::UpstreamEndpoint> JupiterEndpoint = zen::MakeJupiterUpstreamEndpoint(Options); + std::unique_ptr<zen::UpstreamEndpoint> JupiterEndpoint = zen::MakeJupiterUpstreamEndpoint(Options, *m_AuthMgr); m_UpstreamCache->RegisterEndpoint(std::move(JupiterEndpoint)); } } |