aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2022-01-28 13:03:44 +0100
committerPer Larsson <[email protected]>2022-01-28 13:03:44 +0100
commitc775f3f39bc2a3d8c018c3a925a7cd61231ef3a9 (patch)
tree152399c6b8aa05e51107801431c65a938e0a788f
parentExtended auth mgr to restore OpenID provider(s) and token(s). (diff)
downloadzen-c775f3f39bc2a3d8c018c3a925a7cd61231ef3a9.tar.xz
zen-c775f3f39bc2a3d8c018c3a925a7cd61231ef3a9.zip
Get access token from auth mgr.
-rw-r--r--zenserver/auth/authmgr.cpp14
-rw-r--r--zenserver/auth/authmgr.h8
-rw-r--r--zenserver/upstream/upstreamcache.cpp11
-rw-r--r--zenserver/upstream/upstreamcache.h3
-rw-r--r--zenserver/upstream/upstreamservice.cpp6
-rw-r--r--zenserver/upstream/upstreamservice.h6
-rw-r--r--zenserver/zenserver.cpp4
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));
}
}