userver: userver/server/handlers/auth/digest/auth_checker_factory.hpp Source File
Loading...
Searching...
No Matches
auth_checker_factory.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/server/handlers/auth/digest/auth_checker_factory.hpp
4/// @brief Reusable factories for server-side HTTP Digest authentication.
5
6#include <memory>
7#include <string>
8#include <string_view>
9
10#include <userver/components/component_context.hpp>
11#include <userver/server/handlers/auth/auth_checker_factory.hpp>
12#include <userver/server/handlers/auth/digest/auth_checker_base.hpp>
13#include <userver/server/handlers/auth/digest/auth_checker_settings_component.hpp>
14#include <userver/server/handlers/auth/digest/nonce_cache_settings_component.hpp>
15#include <userver/server/handlers/auth/digest/standalone_checker.hpp>
16#include <userver/storages/secdist/secdist.hpp>
17
18USERVER_NAMESPACE_BEGIN
19
20namespace server::handlers::auth::digest {
21
22/// @brief Factory base that owns the common Digest checker configuration wiring.
24public:
25 explicit AuthCheckerFactoryBase(
26 const components::ComponentContext& context,
27 std::string_view settings_component_name = AuthCheckerSettingsComponent::kName
28 );
29
30 auth::AuthCheckerBasePtr MakeAuthChecker(const HandlerAuthConfig& auth_config) const final;
31
32protected:
33 virtual std::shared_ptr<AuthCheckerBase> MakeDigestAuthChecker(
34 const HandlerAuthConfig& auth_config,
35 std::string realm,
36 const AuthCheckerSettings& settings,
37 const SecdistConfig& secdist
38 ) const = 0;
39
40private:
41 const AuthCheckerSettings& settings_;
42 storages::secdist::Secdist& secdist_;
43};
44
45/// @brief Factory base for Digest checkers that keep nonce state in memory.
47public:
48 explicit AuthStandaloneCheckerFactoryBase(
49 const components::ComponentContext& context,
50 std::string_view settings_component_name = NonceCacheSettingsComponent::kName
51 );
52
53protected:
54 virtual std::shared_ptr<AuthStandaloneCheckerBase> MakeStandaloneDigestAuthChecker(
55 const HandlerAuthConfig& auth_config,
56 std::string realm,
57 const AuthCheckerSettings& settings,
58 const SecdistConfig& secdist,
59 const NonceCacheSettings& nonce_cache_settings
60 ) const = 0;
61
62private:
63 std::shared_ptr<AuthCheckerBase> MakeDigestAuthChecker(
64 const HandlerAuthConfig& auth_config,
65 std::string realm,
66 const AuthCheckerSettings& settings,
67 const SecdistConfig& secdist
68 ) const final;
69
70 const NonceCacheSettings& nonce_cache_settings_;
71};
72
73} // namespace server::handlers::auth::digest
74
75USERVER_NAMESPACE_END