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,
77 bool authorize(
const std::string &proto,
const std::string &
host,
89 void clear()
override;
109 const std::optional<std::string> &app_name);
121 const std::string &account)
override;
Definition: mysql_cache_manager.h:82
The handler class is the interface for dynamically loadable storage engines.
Definition: handler.h:4753
Definition: authorize_handler_callbacks.h:35
Definition: authorize_manager.h:123
RestHandlerPtr authorization_result_handler_
Definition: authorize_manager.h:128
RestHandlerPtr list_handler_
Definition: authorize_manager.h:130
RestHandlerPtr authorize_handler_
Definition: authorize_manager.h:125
RestHandlerPtr unauthorize_handler_
Definition: authorize_manager.h:127
RestHandlerPtr user_handler_
Definition: authorize_manager.h:129
RestHandlerPtr status_handler_
Definition: authorize_manager.h:126
Definition: authorize_manager.h:52
void clear() override
Definition: authorize_manager.cc:913
Container get_handlers_by_service_id(const UniversalId service_id)
Definition: authorize_manager.cc:323
~AuthorizeManager() override
Definition: authorize_manager.cc:265
AuthorizeManager(const EndpointConfigurationPtr &configuration, collector::MysqlCacheManager *cache_manager, const std::string &jwt_secret, QueryFactory *query_factory, AuthHandlerFactoryPtr factory)
Definition: authorize_manager.cc:249
std::vector< std::pair< std::string, SessionId > > get_session_ids_cookies(const UniversalId &service_id, http::Cookie *cookies)
Definition: authorize_manager.cc:506
RateControlFor< std::string > hosts_rate_
Definition: authorize_manager.h:144
std::vector< SessionId > get_session_ids_from_cookies(const UniversalId &service_id, http::Cookie *cookies)
Definition: authorize_manager.cc:524
std::chrono::steady_clock steady_clock
Definition: authorize_manager.h:64
EndpointConfigurationPtr configuration_
Definition: authorize_manager.h:136
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:761
void update(const Entries &entries) override
Definition: authorize_manager.cc:290
uint32_t passthrough_db_user_session_pool_size_
Definition: authorize_manager.h:147
minutes jwt_expire_timeout
Definition: authorize_manager.h:145
std::shared_ptr< EndpointConfiguration > EndpointConfigurationPtr
Definition: authorize_manager.h:61
users::UserManager * get_user_manager() override
Definition: authorize_manager.cc:867
SessionPtr get_session_id_from_cookie(const UniversalId &service_id, http::Cookie &cookies)
Definition: authorize_manager.cc:747
void update_users_cache(const ChangedUsersIds &changed_users_ids) override
Definition: authorize_manager.cc:915
RateControlFor< std::string > accounts_rate_
Definition: authorize_manager.h:143
collector::MysqlCacheManager * get_cache() override
Definition: authorize_manager.h:87
AuthorizeHandlerPtr create_authentication_application(const AuthApp &entry)
Definition: authorize_manager.cc:360
std::shared_ptr< RestHandler > RestHandlerPtr
Definition: authorize_manager.h:58
const std::string random_data_
Definition: authorize_manager.h:161
void remove_unreferenced_service_authorizators()
bool unauthorize(const SessionPtr &session, http::Cookie *cookies) override
Definition: authorize_manager.cc:422
collector::MysqlCacheManager * cache_manager_
Definition: authorize_manager.h:137
http::SessionManager session_manager_
Definition: authorize_manager.h:139
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:401
std::vector< AuthorizeHandlerPtr > Container
Definition: authorize_manager.h:62
void configure(const std::string &options) override
Definition: authorize_manager.cc:271
std::string get_jwt_token(UniversalId service_id, const SessionPtr &) override
Definition: authorize_manager.cc:472
void discard_current_session(ServiceId id, http::Cookie *cookies) override
Definition: authorize_manager.cc:906
void collect_garbage()
Definition: authorize_manager.cc:923
AuthorizeHandlerPtr choose_authentication_handler(rest::RequestContext &ctxt, ServiceId service_id, const std::optional< std::string > &app_name)
Definition: authorize_manager.cc:628
std::shared_ptr< ServiceAuthorize > ServiceAuthorizePtr
Definition: authorize_manager.h:133
steady_clock::time_point last_garbage_collection_
Definition: authorize_manager.h:146
bool get_handler_by_id(const UniversalId auth_id, Container::iterator *it)
Definition: authorize_manager.cc:337
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:547
std::map< ServiceId, ServiceAuthorizePtr > MapOfServices
Definition: authorize_manager.h:134
Container get_supported_authentication_applications(ServiceId id) override
Definition: authorize_manager.cc:543
std::string jwt_secret_
Definition: authorize_manager.h:141
std::shared_ptr< mrs::interface::AuthHandlerFactory > AuthHandlerFactoryPtr
Definition: authorize_manager.h:57
AuthHandlerFactoryPtr factory_
Definition: authorize_manager.h:142
Container container_
Definition: authorize_manager.h:140
users::UserManager user_manager_
Definition: authorize_manager.h:138
bool is_authorized(ServiceId id, rest::RequestContext &ctxt, AuthUser *user) override
Definition: authorize_manager.cc:871
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:40
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:72
AuthorizeManager::AuthorizeHandlerPtr AuthorizeHandlerPtr
Definition: authorize_manager.cc:80
AuthorizeManager::SessionPtr SessionPtr
Definition: authorize_manager.cc:81
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