MySQL 9.3.0
Source Code Documentation
mrs::authentication::AuthorizeManager Class Reference

#include <authorize_manager.h>

Inheritance diagram for mrs::authentication::AuthorizeManager:
[legend]

Classes

class  ServiceAuthorize
 

Public Types

using AuthHandler = mrs::interface::AuthorizeHandler
 
using RestHandler = mrs::interface::RestHandler
 
using AuthHandlerFactoryPtr = std::shared_ptr< mrs::interface::AuthHandlerFactory >
 
using RestHandlerPtr = std::shared_ptr< RestHandler >
 
using QueryFactory = mrs::interface::QueryFactory
 
using EndpointConfiguration = mrs::interface::EndpointConfiguration
 
using EndpointConfigurationPtr = std::shared_ptr< EndpointConfiguration >
 
using Container = std::vector< AuthorizeHandlerPtr >
 
using minutes = std::chrono::minutes
 
- Public Types inherited from mrs::interface::AuthorizeManager
using SessionId = http::SessionManager::SessionId
 
using Session = http::SessionManager::Session
 
using SessionPtr = http::SessionManager::SessionPtr
 
using SqlSessionCached = collector::MysqlCacheManager::CachedObject
 
using AuthorizeHandlerPtr = std::shared_ptr< AuthorizeHandler >
 
using AuthHandlers = std::vector< AuthorizeHandlerPtr >
 
using AuthApp = database::entry::AuthApp
 
using AuthUser = database::entry::AuthUser
 
using Entries = std::vector< AuthApp >
 
using ServiceId = UniversalId
 
using Container = std::vector< AuthorizeHandlerPtr >
 
using HttpHeaders = ::http::base::Headers
 
using ChangedUsersIds = mrs::users::UserManager::ChangedUsersIds
 

Public Member Functions

 AuthorizeManager (const EndpointConfigurationPtr &configuration, collector::MysqlCacheManager *cache_manager, const std::string &jwt_secret, QueryFactory *query_factory, AuthHandlerFactoryPtr factory)
 
void update (const Entries &entries) override
 
void configure (const std::string &options) override
 
bool unauthorize (const SessionPtr &session, http::Cookie *cookies) override
 
bool authorize (const std::string &proto, const std::string &host, ServiceId id, rest::RequestContext &ctxt, AuthUser *out_user) override
 
bool is_authorized (ServiceId id, rest::RequestContext &ctxt, AuthUser *user) override
 
std::string get_jwt_token (UniversalId service_id, const SessionPtr &) override
 
void discard_current_session (ServiceId id, http::Cookie *cookies) override
 
users::UserManagerget_user_manager () override
 
collector::MysqlCacheManagerget_cache () override
 
Container get_supported_authentication_applications (ServiceId id) override
 
void clear () override
 
void update_users_cache (const ChangedUsersIds &changed_users_ids) override
 
- Public Member Functions inherited from mrs::interface::AuthorizeManager
virtual ~AuthorizeManager ()=default
 

Private Types

using ServiceAuthorizePtr = std::shared_ptr< ServiceAuthorize >
 
using MapOfServices = std::map< ServiceId, ServiceAuthorizePtr >
 

Private Member Functions

AuthorizeHandlerPtr create_authentication_application (const AuthApp &entry)
 
Container get_handlers_by_service_id (const UniversalId service_id)
 
SessionPtr get_session_id_from_cookie (const UniversalId &service_id, http::Cookie &cookies)
 
std::vector< std::pair< std::string, SessionId > > get_session_ids_cookies (const UniversalId &service_id, http::Cookie *cookies)
 
std::vector< SessionIdget_session_ids_from_cookies (const UniversalId &service_id, http::Cookie *cookies)
 
bool get_handler_by_id (const UniversalId auth_id, Container::iterator *it)
 
bool get_handler_by_id (const UniversalId auth_id, AuthorizeHandlerPtr &out_it)
 
void remove_unreferenced_service_authorizators ()
 
AuthorizeHandlerPtr choose_authentication_handler (rest::RequestContext &ctxt, ServiceId service_id, const std::optional< std::string > &app_name)
 
SessionPtr authorize_jwt (const UniversalId service_id, const helper::Jwt &jwt)
 Validate the JWT token, and get/create session for it. More...
 
void pre_authorize_account (interface::AuthorizeHandler *handler, const std::string &account) override
 
- Private Member Functions inherited from helper::AuthorizeHandlerCallbakcs
virtual ~AuthorizeHandlerCallbakcs ()=default
 

Private Attributes

EndpointConfigurationPtr configuration_
 
collector::MysqlCacheManagercache_manager_
 
users::UserManager user_manager_
 
http::SessionManager session_manager_
 
Container container_
 
std::string jwt_secret_
 
AuthHandlerFactoryPtr factory_
 
RateControlFor< std::string > accounts_rate_
 
RateControlFor< std::string > hosts_rate_
 
minutes jwt_expire_timeout
 
const std::string random_data_
 

Member Typedef Documentation

◆ AuthHandler

◆ AuthHandlerFactoryPtr

◆ Container

◆ EndpointConfiguration

◆ EndpointConfigurationPtr

◆ MapOfServices

◆ minutes

using mrs::authentication::AuthorizeManager::minutes = std::chrono::minutes

◆ QueryFactory

◆ RestHandler

◆ RestHandlerPtr

◆ ServiceAuthorizePtr

Constructor & Destructor Documentation

◆ AuthorizeManager()

mrs::authentication::AuthorizeManager::AuthorizeManager ( const EndpointConfigurationPtr configuration,
collector::MysqlCacheManager cache_manager,
const std::string &  jwt_secret,
QueryFactory query_factory,
AuthHandlerFactoryPtr  factory 
)

Member Function Documentation

◆ authorize()

bool mrs::authentication::AuthorizeManager::authorize ( const std::string &  proto,
const std::string &  host,
ServiceId  id,
rest::RequestContext ctxt,
AuthUser out_user 
)
overridevirtual

◆ authorize_jwt()

SessionPtr mrs::authentication::AuthorizeManager::authorize_jwt ( const UniversalId  service_id,
const helper::Jwt jwt 
)
private

Validate the JWT token, and get/create session for it.

Returns
session pointer

◆ choose_authentication_handler()

AuthorizeHandlerPtr mrs::authentication::AuthorizeManager::choose_authentication_handler ( rest::RequestContext ctxt,
ServiceId  service_id,
const std::optional< std::string > &  app_name 
)
private

◆ clear()

void mrs::authentication::AuthorizeManager::clear ( )
overridevirtual

◆ configure()

void mrs::authentication::AuthorizeManager::configure ( const std::string &  options)
overridevirtual

◆ create_authentication_application()

AuthorizeHandlerPtr mrs::authentication::AuthorizeManager::create_authentication_application ( const AuthApp entry)
private

◆ discard_current_session()

void mrs::authentication::AuthorizeManager::discard_current_session ( ServiceId  id,
http::Cookie cookies 
)
overridevirtual

Reimplemented from mrs::interface::AuthorizeManager.

◆ get_cache()

collector::MysqlCacheManager * mrs::authentication::AuthorizeManager::get_cache ( )
inlineoverridevirtual

◆ get_handler_by_id() [1/2]

bool mrs::authentication::AuthorizeManager::get_handler_by_id ( const UniversalId  auth_id,
AuthorizeHandlerPtr out_it 
)
private

◆ get_handler_by_id() [2/2]

bool mrs::authentication::AuthorizeManager::get_handler_by_id ( const UniversalId  auth_id,
Container::iterator *  it 
)
private

◆ get_handlers_by_service_id()

AuthorizeManager::Container mrs::authentication::AuthorizeManager::get_handlers_by_service_id ( const UniversalId  service_id)
private

◆ get_jwt_token()

std::string mrs::authentication::AuthorizeManager::get_jwt_token ( UniversalId  service_id,
const SessionPtr s 
)
overridevirtual

◆ get_session_id_from_cookie()

SessionPtr mrs::authentication::AuthorizeManager::get_session_id_from_cookie ( const UniversalId service_id,
http::Cookie cookies 
)
private

◆ get_session_ids_cookies()

std::vector< std::pair< std::string, SessionId > > mrs::authentication::AuthorizeManager::get_session_ids_cookies ( const UniversalId service_id,
http::Cookie cookies 
)
private

◆ get_session_ids_from_cookies()

std::vector< SessionId > mrs::authentication::AuthorizeManager::get_session_ids_from_cookies ( const UniversalId service_id,
http::Cookie cookies 
)
private

◆ get_supported_authentication_applications()

AuthorizeManager::Container mrs::authentication::AuthorizeManager::get_supported_authentication_applications ( ServiceId  id)
overridevirtual

◆ get_user_manager()

users::UserManager * mrs::authentication::AuthorizeManager::get_user_manager ( )
overridevirtual

◆ is_authorized()

bool mrs::authentication::AuthorizeManager::is_authorized ( ServiceId  id,
rest::RequestContext ctxt,
AuthUser user 
)
overridevirtual

◆ pre_authorize_account()

void mrs::authentication::AuthorizeManager::pre_authorize_account ( interface::AuthorizeHandler handler,
const std::string &  account 
)
overrideprivatevirtual

◆ remove_unreferenced_service_authorizators()

void mrs::authentication::AuthorizeManager::remove_unreferenced_service_authorizators ( )
private

◆ unauthorize()

bool mrs::authentication::AuthorizeManager::unauthorize ( const SessionPtr session,
http::Cookie cookies 
)
overridevirtual

◆ update()

void mrs::authentication::AuthorizeManager::update ( const Entries entries)
overridevirtual

◆ update_users_cache()

void mrs::authentication::AuthorizeManager::update_users_cache ( const ChangedUsersIds changed_users_ids)
overridevirtual

Member Data Documentation

◆ accounts_rate_

RateControlFor<std::string> mrs::authentication::AuthorizeManager::accounts_rate_
private

◆ cache_manager_

collector::MysqlCacheManager* mrs::authentication::AuthorizeManager::cache_manager_
private

◆ configuration_

EndpointConfigurationPtr mrs::authentication::AuthorizeManager::configuration_
private

◆ container_

Container mrs::authentication::AuthorizeManager::container_
private

◆ factory_

AuthHandlerFactoryPtr mrs::authentication::AuthorizeManager::factory_
private

◆ hosts_rate_

RateControlFor<std::string> mrs::authentication::AuthorizeManager::hosts_rate_
private

◆ jwt_expire_timeout

minutes mrs::authentication::AuthorizeManager::jwt_expire_timeout
private

◆ jwt_secret_

std::string mrs::authentication::AuthorizeManager::jwt_secret_
private

◆ random_data_

const std::string mrs::authentication::AuthorizeManager::random_data_
private

◆ session_manager_

http::SessionManager mrs::authentication::AuthorizeManager::session_manager_
private

◆ user_manager_

users::UserManager mrs::authentication::AuthorizeManager::user_manager_
private

The documentation for this class was generated from the following files: