From 5b7c068b482b563443320453064fe5fa5601d446 Mon Sep 17 00:00:00 2001 From: Per Larsson Date: Wed, 2 Feb 2022 16:56:38 +0100 Subject: Added upstream auth config and removed the possibility to add endpoints via REST. --- zenserver/upstream/upstreamcache.cpp | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) (limited to 'zenserver/upstream/upstreamcache.cpp') diff --git a/zenserver/upstream/upstreamcache.cpp b/zenserver/upstream/upstreamcache.cpp index 58c025b4f..d83542701 100644 --- a/zenserver/upstream/upstreamcache.cpp +++ b/zenserver/upstream/upstreamcache.cpp @@ -85,9 +85,7 @@ namespace detail { class JupiterUpstreamEndpoint final : public UpstreamEndpoint { public: - JupiterUpstreamEndpoint(const CloudCacheClientOptions& Options, - std::unique_ptr TokenProvider, - AuthMgr& Mgr) + JupiterUpstreamEndpoint(const CloudCacheClientOptions& Options, const UpstreamAuthConfig& AuthConfig, AuthMgr& Mgr) : m_AuthMgr(Mgr) , m_Log(zen::logging::Get("upstream")) , m_UseLegacyDdc(Options.UseLegacyDdc) @@ -95,7 +93,30 @@ namespace detail { ZEN_ASSERT(!Options.Name.empty()); m_Info.Name = Options.Name; m_Info.Url = Options.ServiceUrl; - m_Client = new CloudCacheClient(Options, std::move(TokenProvider)); + + std::unique_ptr TokenProvider; + + if (AuthConfig.OAuthUrl.empty() == false) + { + TokenProvider = CloudCacheTokenProvider::MakeFromOAuthClientCredentials( + {.Url = AuthConfig.OAuthUrl, .ClientId = AuthConfig.OAuthClientId, .ClientSecret = AuthConfig.OAuthClientSecret}); + } + else if (AuthConfig.OpenIdProvider.empty() == false) + { + TokenProvider = CloudCacheTokenProvider::MakeFromCallback([this, ProviderName = std::string(AuthConfig.OpenIdProvider)]() { + AuthMgr::OpenIdAccessToken Token = m_AuthMgr.GetOpenIdAccessToken(ProviderName); + return CloudCacheAccessToken{.Value = Token.AccessToken, .ExpireTime = Token.ExpireTime}; + }); + } + else + { + CloudCacheAccessToken AccessToken{.Value = std::string(AuthConfig.AccessToken), + .ExpireTime = CloudCacheAccessToken::TimePoint::max()}; + + TokenProvider = CloudCacheTokenProvider::MakeFromStaticToken(AccessToken); + } + + m_Client = new CloudCacheClient(Options, std::move(TokenProvider)); } virtual ~JupiterUpstreamEndpoint() = default; @@ -1491,9 +1512,9 @@ MakeUpstreamCache(const UpstreamCacheOptions& Options, ZenCacheStore& CacheStore } std::unique_ptr -MakeJupiterUpstreamEndpoint(const CloudCacheClientOptions& Options, std::unique_ptr TokenProvider, AuthMgr& Mgr) +MakeJupiterUpstreamEndpoint(const CloudCacheClientOptions& Options, const UpstreamAuthConfig& AuthConfig, AuthMgr& Mgr) { - return std::make_unique(Options, std::move(TokenProvider), Mgr); + return std::make_unique(Options, AuthConfig, Mgr); } std::unique_ptr -- cgit v1.2.3