26#ifndef ROUTER_SRC_REST_MRS_SRC_MRS_AUTHENTICATION_AUTH_MANAGER_H_
27#define ROUTER_SRC_REST_MRS_SRC_MRS_AUTHENTICATION_AUTH_MANAGER_H_
49namespace authentication {
57 std::shared_ptr<mrs::interface::AuthHandlerFactory>;
69 const std::string &jwt_secret,
QueryFactory *query_factory,
76 bool authorize(
const std::string &proto,
const std::string &
host,
88 void clear()
override;
108 const std::optional<std::string> &app_name);
120 const std::string &account)
override;
Definition: mysql_cache_manager.h:87
The handler class is the interface for dynamically loadable storage engines.
Definition: handler.h:4666
Definition: authorize_handler_callbacks.h:35
Definition: authorize_manager.h:122
RestHandlerPtr authorization_result_handler_
Definition: authorize_manager.h:127
RestHandlerPtr list_handler_
Definition: authorize_manager.h:129
RestHandlerPtr authorize_handler_
Definition: authorize_manager.h:124
RestHandlerPtr unauthorize_handler_
Definition: authorize_manager.h:126
RestHandlerPtr user_handler_
Definition: authorize_manager.h:128
RestHandlerPtr status_handler_
Definition: authorize_manager.h:125
Definition: authorize_manager.h:52
void clear() override
Definition: authorize_manager.cc:887
Container get_handlers_by_service_id(const UniversalId service_id)
Definition: authorize_manager.cc:306
AuthorizeManager(const EndpointConfigurationPtr &configuration, collector::MysqlCacheManager *cache_manager, const std::string &jwt_secret, QueryFactory *query_factory, AuthHandlerFactoryPtr factory)
Definition: authorize_manager.cc:238
std::vector< std::pair< std::string, SessionId > > get_session_ids_cookies(const UniversalId &service_id, http::Cookie *cookies)
Definition: authorize_manager.cc:489
RateControlFor< std::string > hosts_rate_
Definition: authorize_manager.h:143
std::vector< SessionId > get_session_ids_from_cookies(const UniversalId &service_id, http::Cookie *cookies)
Definition: authorize_manager.cc:507
std::chrono::steady_clock steady_clock
Definition: authorize_manager.h:64
EndpointConfigurationPtr configuration_
Definition: authorize_manager.h:135
bool authorize(const std::string &proto, const std::string &host, ServiceId id, bool passthrough_db_user, rest::RequestContext &ctxt, AuthUser *out_user) override
Definition: authorize_manager.cc:733
void update(const Entries &entries) override
Definition: authorize_manager.cc:273
uint32_t passthrough_db_user_session_pool_size_
Definition: authorize_manager.h:146
minutes jwt_expire_timeout
Definition: authorize_manager.h:144
std::shared_ptr< EndpointConfiguration > EndpointConfigurationPtr
Definition: authorize_manager.h:61
users::UserManager * get_user_manager() override
Definition: authorize_manager.cc:841
SessionPtr get_session_id_from_cookie(const UniversalId &service_id, http::Cookie &cookies)
Definition: authorize_manager.cc:719
void update_users_cache(const ChangedUsersIds &changed_users_ids) override
Definition: authorize_manager.cc:889
RateControlFor< std::string > accounts_rate_
Definition: authorize_manager.h:142
collector::MysqlCacheManager * get_cache() override
Definition: authorize_manager.h:86
AuthorizeHandlerPtr create_authentication_application(const AuthApp &entry)
Definition: authorize_manager.cc:343
std::shared_ptr< RestHandler > RestHandlerPtr
Definition: authorize_manager.h:58
const std::string random_data_
Definition: authorize_manager.h:160
void remove_unreferenced_service_authorizators()
bool unauthorize(const SessionPtr &session, http::Cookie *cookies) override
Definition: authorize_manager.cc:405
collector::MysqlCacheManager * cache_manager_
Definition: authorize_manager.h:136
http::SessionManager session_manager_
Definition: authorize_manager.h:138
std::chrono::minutes minutes
Definition: authorize_manager.h:63
void pre_authorize_account(interface::AuthorizeHandler *handler, const std::string &account) override
Definition: authorize_manager.cc:384
std::vector< AuthorizeHandlerPtr > Container
Definition: authorize_manager.h:62
void configure(const std::string &options) override
Definition: authorize_manager.cc:254
std::string get_jwt_token(UniversalId service_id, const SessionPtr &) override
Definition: authorize_manager.cc:455
void discard_current_session(ServiceId id, http::Cookie *cookies) override
Definition: authorize_manager.cc:880
void collect_garbage()
Definition: authorize_manager.cc:897
AuthorizeHandlerPtr choose_authentication_handler(rest::RequestContext &ctxt, ServiceId service_id, const std::optional< std::string > &app_name)
Definition: authorize_manager.cc:609
std::shared_ptr< ServiceAuthorize > ServiceAuthorizePtr
Definition: authorize_manager.h:132
steady_clock::time_point last_garbage_collection_
Definition: authorize_manager.h:145
bool get_handler_by_id(const UniversalId auth_id, Container::iterator *it)
Definition: authorize_manager.cc:320
SessionPtr authorize_jwt(const UniversalId service_id, const helper::Jwt &jwt)
Validate the JWT token, and get/create session for it.
Definition: authorize_manager.cc:530
std::map< ServiceId, ServiceAuthorizePtr > MapOfServices
Definition: authorize_manager.h:133
Container get_supported_authentication_applications(ServiceId id) override
Definition: authorize_manager.cc:526
std::string jwt_secret_
Definition: authorize_manager.h:140
std::shared_ptr< mrs::interface::AuthHandlerFactory > AuthHandlerFactoryPtr
Definition: authorize_manager.h:57
AuthHandlerFactoryPtr factory_
Definition: authorize_manager.h:141
Container container_
Definition: authorize_manager.h:139
users::UserManager user_manager_
Definition: authorize_manager.h:137
bool is_authorized(ServiceId id, rest::RequestContext &ctxt, AuthUser *user) override
Definition: authorize_manager.cc:845
Definition: rate_control_for.h:48
Definition: session_manager.h:52
Definition: authorize_handler.h:53
Definition: authorize_manager.h:58
std::shared_ptr< AuthorizeHandler > AuthorizeHandlerPtr
Definition: authorize_manager.h:64
database::entry::AuthUser AuthUser
Definition: authorize_manager.h:67
std::vector< AuthApp > Entries
Definition: authorize_manager.h:68
UniversalId ServiceId
Definition: authorize_manager.h:69
mrs::users::UserManager::ChangedUsersIds ChangedUsersIds
Definition: authorize_manager.h:72
http::SessionManager::SessionPtr SessionPtr
Definition: authorize_manager.h:62
Definition: endpoint_configuration.h:35
Definition: query_factory.h:55
Definition: rest_handler.h:141
Definition: user_manager.h:41
const char * host
Definition: mysqladmin.cc:66
mrs::database::entry::AuthApp AuthApp
Definition: oauth2_handler.cc:58
std::chrono::minutes minutes
Definition: authorize_manager.cc:69
AuthorizeManager::AuthorizeHandlerPtr AuthorizeHandlerPtr
Definition: authorize_manager.cc:77
AuthorizeManager::SessionPtr SessionPtr
Definition: authorize_manager.cc:78
DbServiceEndpoint::EndpointConfiguration EndpointConfiguration
Definition: db_service_endpoint.cc:49
Definition: authorize_manager.h:48
mrs::database::entry::UniversalId UniversalId
Definition: universal_id.h:33
Definition: options.cc:57
required string configuration
Definition: replication_asynchronous_connection_failover.proto:49
Definition: completion_hash.h:35
Definition: request_context.h:47