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>;
68 const std::string &jwt_secret,
QueryFactory *query_factory,
75 bool authorize(
const std::string &proto,
const std::string &
host,
87 void clear()
override;
105 const std::optional<std::string> &app_name);
117 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:4618
Definition: authorize_handler_callbacks.h:35
Definition: authorize_manager.h:119
RestHandlerPtr authorization_result_handler_
Definition: authorize_manager.h:124
RestHandlerPtr list_handler_
Definition: authorize_manager.h:126
RestHandlerPtr authorize_handler_
Definition: authorize_manager.h:121
RestHandlerPtr unauthorize_handler_
Definition: authorize_manager.h:123
RestHandlerPtr user_handler_
Definition: authorize_manager.h:125
RestHandlerPtr status_handler_
Definition: authorize_manager.h:122
Definition: authorize_manager.h:52
void clear() override
Definition: authorize_manager.cc:856
Container get_handlers_by_service_id(const UniversalId service_id)
Definition: authorize_manager.cc:278
AuthorizeManager(const EndpointConfigurationPtr &configuration, collector::MysqlCacheManager *cache_manager, const std::string &jwt_secret, QueryFactory *query_factory, AuthHandlerFactoryPtr factory)
Definition: authorize_manager.cc:214
bool authorize(const std::string &proto, const std::string &host, ServiceId id, rest::RequestContext &ctxt, AuthUser *out_user) override
Definition: authorize_manager.cc:708
std::vector< std::pair< std::string, SessionId > > get_session_ids_cookies(const UniversalId &service_id, http::Cookie *cookies)
Definition: authorize_manager.cc:464
RateControlFor< std::string > hosts_rate_
Definition: authorize_manager.h:140
std::vector< SessionId > get_session_ids_from_cookies(const UniversalId &service_id, http::Cookie *cookies)
Definition: authorize_manager.cc:482
EndpointConfigurationPtr configuration_
Definition: authorize_manager.h:132
void update(const Entries &entries) override
Definition: authorize_manager.cc:245
minutes jwt_expire_timeout
Definition: authorize_manager.h:141
std::shared_ptr< EndpointConfiguration > EndpointConfigurationPtr
Definition: authorize_manager.h:61
users::UserManager * get_user_manager() override
Definition: authorize_manager.cc:810
SessionPtr get_session_id_from_cookie(const UniversalId &service_id, http::Cookie &cookies)
Definition: authorize_manager.cc:694
void update_users_cache(const ChangedUsersIds &changed_users_ids) override
Definition: authorize_manager.cc:858
RateControlFor< std::string > accounts_rate_
Definition: authorize_manager.h:139
collector::MysqlCacheManager * get_cache() override
Definition: authorize_manager.h:85
AuthorizeHandlerPtr create_authentication_application(const AuthApp &entry)
Definition: authorize_manager.cc:315
std::shared_ptr< RestHandler > RestHandlerPtr
Definition: authorize_manager.h:58
const std::string random_data_
Definition: authorize_manager.h:155
void remove_unreferenced_service_authorizators()
bool unauthorize(const SessionPtr &session, http::Cookie *cookies) override
Definition: authorize_manager.cc:377
collector::MysqlCacheManager * cache_manager_
Definition: authorize_manager.h:133
http::SessionManager session_manager_
Definition: authorize_manager.h:135
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:356
std::vector< AuthorizeHandlerPtr > Container
Definition: authorize_manager.h:62
void configure(const std::string &options) override
Definition: authorize_manager.cc:228
std::string get_jwt_token(UniversalId service_id, const SessionPtr &) override
Definition: authorize_manager.cc:427
void discard_current_session(ServiceId id, http::Cookie *cookies) override
Definition: authorize_manager.cc:849
AuthorizeHandlerPtr choose_authentication_handler(rest::RequestContext &ctxt, ServiceId service_id, const std::optional< std::string > &app_name)
Definition: authorize_manager.cc:584
std::shared_ptr< ServiceAuthorize > ServiceAuthorizePtr
Definition: authorize_manager.h:129
bool get_handler_by_id(const UniversalId auth_id, Container::iterator *it)
Definition: authorize_manager.cc:292
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:505
std::map< ServiceId, ServiceAuthorizePtr > MapOfServices
Definition: authorize_manager.h:130
Container get_supported_authentication_applications(ServiceId id) override
Definition: authorize_manager.cc:501
std::string jwt_secret_
Definition: authorize_manager.h:137
std::shared_ptr< mrs::interface::AuthHandlerFactory > AuthHandlerFactoryPtr
Definition: authorize_manager.h:57
AuthHandlerFactoryPtr factory_
Definition: authorize_manager.h:138
Container container_
Definition: authorize_manager.h:136
users::UserManager user_manager_
Definition: authorize_manager.h:134
bool is_authorized(ServiceId id, rest::RequestContext &ctxt, AuthUser *user) override
Definition: authorize_manager.cc:814
Definition: rate_control_for.h:48
Definition: session_manager.h:48
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:135
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:70
AuthorizeManager::AuthorizeHandlerPtr AuthorizeHandlerPtr
Definition: authorize_manager.cc:78
AuthorizeManager::SessionPtr SessionPtr
Definition: authorize_manager.cc:79
DbServiceEndpoint::EndpointConfiguration EndpointConfiguration
Definition: db_service_endpoint.cc:48
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