pulsar-client-cpp
Authentication.h
1 
19 #ifndef PULSAR_AUTHENTICATION_H_
20 #define PULSAR_AUTHENTICATION_H_
21 
22 #include <vector>
23 #include <string>
24 #include <map>
25 #include <memory>
26 #include <pulsar/Result.h>
27 #include <functional>
28 
29 #pragma GCC visibility push(default)
30 
31 namespace pulsar {
32 
34 class Authentication;
35 
37  public:
38  virtual ~AuthenticationDataProvider();
39  virtual bool hasDataForTls();
40  virtual std::string getTlsCertificates();
41  virtual std::string getTlsPrivateKey();
42  virtual bool hasDataForHttp();
43  virtual std::string getHttpAuthType();
44  virtual std::string getHttpHeaders();
45  virtual bool hasDataFromCommand();
46  virtual std::string getCommandData();
47 
48  protected:
50 };
51 
52 typedef std::shared_ptr<AuthenticationDataProvider> AuthenticationDataPtr;
53 typedef std::shared_ptr<Authentication> AuthenticationPtr;
54 typedef std::map<std::string, std::string> ParamMap;
55 
57  public:
58  virtual ~Authentication();
59  virtual const std::string getAuthMethodName() const = 0;
60  virtual Result getAuthData(AuthenticationDataPtr& authDataContent) const {
61  authDataContent = authData_;
62  return ResultOk;
63  }
64  static ParamMap parseDefaultFormatAuthParams(const std::string& authParamsString);
65 
66  protected:
68  AuthenticationDataPtr authData_;
69  friend class ClientConfiguration;
70 };
71 
80 class AuthFactory {
81  public:
82  static AuthenticationPtr Disabled();
83 
89  static AuthenticationPtr create(const std::string& pluginNameOrDynamicLibPath);
90  static AuthenticationPtr create(const std::string& pluginNameOrDynamicLibPath,
91  const std::string& authParamsString);
92  static AuthenticationPtr create(const std::string& pluginNameOrDynamicLibPath, ParamMap& params);
93 
94  protected:
95  static bool isShutdownHookRegistered_;
96  static std::vector<void*> loadedLibrariesHandles_;
97  static void release_handles();
98 };
99 
103 class AuthTls : public Authentication {
104  public:
105  AuthTls(AuthenticationDataPtr&);
106  ~AuthTls();
107  static AuthenticationPtr create(ParamMap& params);
108  static AuthenticationPtr create(const std::string& authParamsString);
109  static AuthenticationPtr create(const std::string& certificatePath, const std::string& privateKeyPath);
110  const std::string getAuthMethodName() const;
111  Result getAuthData(AuthenticationDataPtr& authDataTls) const;
112 
113  private:
114  AuthenticationDataPtr authDataTls_;
115 };
116 
117 typedef std::function<std::string()> TokenSupplier;
118 
122 class AuthToken : public Authentication {
123  public:
124  AuthToken(AuthenticationDataPtr&);
125  ~AuthToken();
126 
127  static AuthenticationPtr create(ParamMap& params);
128 
129  static AuthenticationPtr create(const std::string& authParamsString);
130 
137  static AuthenticationPtr createWithToken(const std::string& token);
138 
145  static AuthenticationPtr create(const TokenSupplier& tokenSupplier);
146 
147  const std::string getAuthMethodName() const;
148  Result getAuthData(AuthenticationDataPtr& authDataToken) const;
149 
150  private:
151  AuthenticationDataPtr authDataToken_;
152 };
153 
157 class AuthAthenz : public Authentication {
158  public:
159  AuthAthenz(AuthenticationDataPtr&);
160  ~AuthAthenz();
161  static AuthenticationPtr create(ParamMap& params);
162  static AuthenticationPtr create(const std::string& authParamsString);
163  const std::string getAuthMethodName() const;
164  Result getAuthData(AuthenticationDataPtr& authDataAthenz) const;
165 
166  private:
167  AuthenticationDataPtr authDataAthenz_;
168 };
169 
170 } // namespace pulsar
171 
172 #pragma GCC visibility pop
173 
174 #endif /* PULSAR_AUTHENTICATION_H_ */
pulsar::AuthAthenz
Definition: Authentication.h:157
pulsar::AuthFactory
Definition: Authentication.h:80
pulsar::Result
Result
Definition: Result.h:31
pulsar::ClientConfiguration
Definition: ClientConfiguration.h:29
pulsar::AuthToken::createWithToken
static AuthenticationPtr createWithToken(const std::string &token)
pulsar::AuthFactory::create
static AuthenticationPtr create(const std::string &pluginNameOrDynamicLibPath)
pulsar::AuthToken
Definition: Authentication.h:122
pulsar
Definition: Authentication.h:31
pulsar::Authentication
Definition: Authentication.h:56
pulsar::AuthenticationDataProvider
Definition: Authentication.h:36
pulsar::AuthTls
Definition: Authentication.h:103