MySQL 9.3.0
Source Code Documentation
scram_handler.h
Go to the documentation of this file.
1/*
2 Copyright (c) 2023, 2025, Oracle and/or its affiliates.
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License, version 2.0,
6 as published by the Free Software Foundation.
7
8 This program is designed to work with certain software (including
9 but not limited to OpenSSL) that is licensed under separate terms,
10 as designated in a particular file or component or in included license
11 documentation. The authors of MySQL hereby grant you an additional
12 permission to link the program and your derivative works with the
13 separately licensed software that they have either included with
14 the program or referenced in the documentation.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with this program; if not, write to the Free Software
23 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
24 */
25
26#ifndef ROUTER_SRC_REST_MRS_SRC_MRS_AUTHENTICATION_SCRAM_HANDLER_H_
27#define ROUTER_SRC_REST_MRS_SRC_MRS_AUTHENTICATION_SCRAM_HANDLER_H_
28
31
32namespace mrs {
33namespace authentication {
34
35class ScramHandler : public SaslHandler {
36 public:
37 ScramHandler(const AuthApp &entry, const std::string &random_data,
38 QueryFactory *qf, SessionManager *session_manager);
39
40 const std::string &get_handler_name() const override;
41 bool redirects(RequestContext &ctxt) const override;
42 std::optional<std::string> get_session_id_from_request_data(
43 RequestContext &) override;
44
45 std::unique_ptr<SessionData> allocate_session_data() override;
46
48 RequestContext &ctxt, Session *session, AuthUser *out_user) override;
50 AuthUser *out_user, const std::string &auth_data,
51 const bool is_json) override;
53 AuthUser *out_user,
54 const std::string &auth_data,
55 const bool is_json) override;
56
57 private:
58 std::string get_salt_for_the_user(const std::string &user_name) const;
59 const std::string random_data_;
61};
62
63} // namespace authentication
64} // namespace mrs
65
66#endif // ROUTER_SRC_REST_MRS_SRC_MRS_AUTHENTICATION_SCRAM_HANDLER_H_
Definition: sasl_handler.h:48
Definition: scram_handler.h:35
const std::string & get_handler_name() const override
Definition: scram_handler.cc:125
std::unique_ptr< SessionData > allocate_session_data() override
Definition: scram_handler.cc:132
SaslResult client_request_authentication_exchange(RequestContext &ctxt, Session *session, AuthUser *out_user) override
Definition: scram_handler.cc:136
SaslResult client_initial_response(RequestContext &ctxt, Session *session, AuthUser *out_user, const std::string &auth_data, const bool is_json) override
Definition: scram_handler.cc:149
const std::string random_data_
Definition: scram_handler.h:59
std::optional< std::string > get_session_id_from_request_data(RequestContext &) override
Definition: scram_handler.cc:265
ScramHandler(const AuthApp &entry, const std::string &random_data, QueryFactory *qf, SessionManager *session_manager)
Definition: scram_handler.cc:117
SessionManager * session_manager_
Definition: scram_handler.h:60
std::string get_salt_for_the_user(const std::string &user_name) const
Definition: scram_handler.cc:144
SaslResult client_response(RequestContext &ctxt, Session *session, AuthUser *out_user, const std::string &auth_data, const bool is_json) override
Definition: scram_handler.cc:224
bool redirects(RequestContext &ctxt) const override
Definition: scram_handler.cc:260
Definition: session_manager.h:64
Definition: session_manager.h:48
mrs::database::entry::AuthUser AuthUser
Definition: authorize_handler.h:56
mrs::database::entry::AuthApp AuthApp
Definition: authorize_handler.h:57
Definition: query_factory.h:55
Definition: authorize_manager.h:48
Definition: completion_hash.h:35
Definition: request_context.h:47