19 #ifndef PULSAR_AUTHENTICATION_H_
20 #define PULSAR_AUTHENTICATION_H_
22 #include <pulsar/Result.h>
23 #include <pulsar/defines.h>
43 virtual bool hasDataForTls();
48 virtual std::string getTlsCertificates();
53 virtual std::string getTlsPrivateKey();
58 virtual bool hasDataForHttp();
63 virtual std::string getHttpAuthType();
68 virtual std::string getHttpHeaders();
73 virtual bool hasDataFromCommand();
78 virtual std::string getCommandData();
84 typedef std::shared_ptr<AuthenticationDataProvider> AuthenticationDataPtr;
85 typedef std::shared_ptr<Authentication> AuthenticationPtr;
86 typedef std::map<std::string, std::string> ParamMap;
95 virtual const std::string getAuthMethodName()
const = 0;
105 authDataContent = authData_;
120 static ParamMap parseDefaultFormatAuthParams(
const std::string& authParamsString);
124 AuthenticationDataPtr authData_;
138 static AuthenticationPtr Disabled();
145 static AuthenticationPtr create(
const std::string& pluginNameOrDynamicLibPath);
153 static AuthenticationPtr create(
const std::string& pluginNameOrDynamicLibPath,
154 const std::string& authParamsString);
172 static AuthenticationPtr create(
const std::string& pluginNameOrDynamicLibPath, ParamMap& params);
175 static bool isShutdownHookRegistered_;
176 static std::vector<void*> loadedLibrariesHandles_;
177 static void release_handles();
185 AuthTls(AuthenticationDataPtr&);
194 static AuthenticationPtr create(ParamMap& params);
201 static AuthenticationPtr create(
const std::string& authParamsString);
209 static AuthenticationPtr create(
const std::string& certificatePath,
const std::string& privateKeyPath);
214 const std::string getAuthMethodName()
const;
223 Result getAuthData(AuthenticationDataPtr& authDataTls);
226 AuthenticationDataPtr authDataTls_;
229 typedef std::function<std::string()> TokenSupplier;
254 static AuthenticationPtr create(ParamMap& params);
261 static AuthenticationPtr create(
const std::string& authParamsString);
269 static AuthenticationPtr createWithToken(
const std::string& token);
277 static AuthenticationPtr create(
const TokenSupplier& tokenSupplier);
282 const std::string getAuthMethodName()
const;
291 Result getAuthData(AuthenticationDataPtr& authDataToken);
294 AuthenticationDataPtr authDataToken_;
302 explicit AuthBasic(AuthenticationDataPtr&);
311 static AuthenticationPtr create(ParamMap& params);
318 static AuthenticationPtr create(
const std::string& authParamsString);
323 static AuthenticationPtr create(
const std::string& username,
const std::string& password);
328 static AuthenticationPtr create(
const std::string& username,
const std::string& password,
329 const std::string& method);
334 const std::string getAuthMethodName()
const override;
343 Result getAuthData(AuthenticationDataPtr& authDataBasic)
override;
346 AuthenticationDataPtr authDataBasic_;
366 static AuthenticationPtr create(ParamMap& params);
373 static AuthenticationPtr create(
const std::string& authParamsString);
378 const std::string getAuthMethodName()
const;
387 Result getAuthData(AuthenticationDataPtr& authDataAthenz);
390 AuthenticationDataPtr authDataAthenz_;
399 undefined_expiration = -1
457 std::string accessToken_;
459 std::string idToken_;
461 std::string refreshToken_;
466 typedef std::shared_ptr<Oauth2TokenResult> Oauth2TokenResultPtr;
486 virtual void close() = 0;
492 typedef std::shared_ptr<Oauth2Flow> FlowPtr;
514 typedef std::shared_ptr<CachedToken> CachedTokenPtr;
541 static AuthenticationPtr create(ParamMap& params);
548 static AuthenticationPtr create(
const std::string& authParamsString);
553 const std::string getAuthMethodName()
const;
562 Result getAuthData(AuthenticationDataPtr& authDataOauth2);
566 CachedTokenPtr cachedTokenPtr_;