CCF
Loading...
Searching...
No Matches
cert_auth.h
Go to the documentation of this file.
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the Apache 2.0 License.
3#pragma once
4
6#include "ccf/entity_id.h"
7
8namespace ccf
9{
10 inline std::optional<OpenAPISecuritySchema> get_cert_based_security_schema()
11 {
12 // There is currently no OpenAPI-compliant way to describe cert-based TLS
13 // auth, so this policy is not documented. This should change in
14 // OpenAPI3.1: https://github.com/OAI/OpenAPI-Specification/pull/1764
15 return std::nullopt;
16 }
17
23
25
27 {
28 protected:
29 std::unique_ptr<ValidityPeriodsCache> validity_periods;
30
31 public:
32 static constexpr auto SECURITY_SCHEME_NAME = "user_cert";
33
36
37 std::unique_ptr<AuthnIdentity> authenticate(
39 const std::shared_ptr<ccf::RpcContext>& ctx,
40 std::string& error_reason) override;
41
42 [[nodiscard]] std::optional<OpenAPISecuritySchema>
44 {
46 }
47
48 std::string get_security_scheme_name() override
49 {
51 };
52 };
53
59
61 {
62 protected:
63 std::unique_ptr<ValidityPeriodsCache> validity_periods;
64
65 public:
66 static constexpr auto SECURITY_SCHEME_NAME = "member_cert";
67
70
71 std::unique_ptr<AuthnIdentity> authenticate(
73 const std::shared_ptr<ccf::RpcContext>& ctx,
74 std::string& error_reason) override;
75
76 [[nodiscard]] std::optional<OpenAPISecuritySchema>
78 {
80 }
81
82 std::string get_security_scheme_name() override
83 {
85 };
86 };
87
92
94 {
95 public:
96 static constexpr auto SECURITY_SCHEME_NAME = "node_cert";
97
98 std::unique_ptr<AuthnIdentity> authenticate(
100 const std::shared_ptr<ccf::RpcContext>& ctx,
101 std::string& error_reason) override;
102
103 [[nodiscard]] std::optional<OpenAPISecuritySchema>
105 {
107 }
108
109 std::string get_security_scheme_name() override
110 {
112 };
113 };
114
116 {
117 // Certificate as a vector of DER-encoded bytes
118 std::vector<uint8_t> cert;
119 };
120
122 {
123 protected:
124 std::unique_ptr<ValidityPeriodsCache> validity_periods;
125
126 public:
127 static constexpr auto SECURITY_SCHEME_NAME = "any_cert";
128
131
132 std::unique_ptr<AuthnIdentity> authenticate(
134 const std::shared_ptr<ccf::RpcContext>& ctx,
135 std::string& error_reason) override;
136
137 [[nodiscard]] std::optional<OpenAPISecuritySchema>
139 {
141 }
142
143 std::string get_security_scheme_name() override
144 {
146 };
147 };
148}
Definition cert_auth.h:122
~AnyCertAuthnPolicy() override
std::optional< OpenAPISecuritySchema > get_openapi_security_schema() const override
Definition cert_auth.h:138
std::string get_security_scheme_name() override
Definition cert_auth.h:143
std::unique_ptr< ValidityPeriodsCache > validity_periods
Definition cert_auth.h:124
AnyCertAuthnPolicy()
Definition cert_auth.cpp:210
static constexpr auto SECURITY_SCHEME_NAME
Definition cert_auth.h:127
std::unique_ptr< AuthnIdentity > authenticate(ccf::kv::ReadOnlyTx &tx, const std::shared_ptr< ccf::RpcContext > &ctx, std::string &error_reason) override
Definition cert_auth.cpp:216
Definition authentication_types.h:28
Definition cert_auth.h:61
std::unique_ptr< ValidityPeriodsCache > validity_periods
Definition cert_auth.h:63
std::string get_security_scheme_name() override
Definition cert_auth.h:82
MemberCertAuthnPolicy()
Definition cert_auth.cpp:139
std::unique_ptr< AuthnIdentity > authenticate(ccf::kv::ReadOnlyTx &tx, const std::shared_ptr< ccf::RpcContext > &ctx, std::string &error_reason) override
Definition cert_auth.cpp:145
static constexpr auto SECURITY_SCHEME_NAME
Definition cert_auth.h:66
std::optional< OpenAPISecuritySchema > get_openapi_security_schema() const override
Definition cert_auth.h:77
Definition cert_auth.h:94
std::string get_security_scheme_name() override
Definition cert_auth.h:109
std::optional< OpenAPISecuritySchema > get_openapi_security_schema() const override
Definition cert_auth.h:104
static constexpr auto SECURITY_SCHEME_NAME
Definition cert_auth.h:96
std::unique_ptr< AuthnIdentity > authenticate(ccf::kv::ReadOnlyTx &tx, const std::shared_ptr< ccf::RpcContext > &ctx, std::string &error_reason) override
Definition cert_auth.cpp:171
Definition cert_auth.h:27
std::optional< OpenAPISecuritySchema > get_openapi_security_schema() const override
Definition cert_auth.h:43
std::string get_security_scheme_name() override
Definition cert_auth.h:48
~UserCertAuthnPolicy() override
std::unique_ptr< ValidityPeriodsCache > validity_periods
Definition cert_auth.h:29
static constexpr auto SECURITY_SCHEME_NAME
Definition cert_auth.h:32
std::unique_ptr< AuthnIdentity > authenticate(ccf::kv::ReadOnlyTx &tx, const std::shared_ptr< ccf::RpcContext > &ctx, std::string &error_reason) override
Definition cert_auth.cpp:107
UserCertAuthnPolicy()
Definition cert_auth.cpp:101
Definition tx.h:159
Definition app_interface.h:14
std::optional< OpenAPISecuritySchema > get_cert_based_security_schema()
Definition cert_auth.h:10
Definition cert_auth.h:116
std::vector< uint8_t > cert
Definition cert_auth.h:118
Definition authentication_types.h:19
Definition cert_auth.h:55
MemberId member_id
Definition cert_auth.h:57
Definition cert_auth.h:89
ccf::NodeId node_id
Definition cert_auth.h:90
Definition cert_auth.h:19
UserId user_id
Definition cert_auth.h:21
Definition cert_auth.cpp:18