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 namespace
11 {
12 std::optional<OpenAPISecuritySchema> get_cert_based_security_schema()
13 {
14 // There is currently no OpenAPI-compliant way to describe cert-based TLS
15 // auth, so this policy is not documented. This should change in
16 // OpenAPI3.1: https://github.com/OAI/OpenAPI-Specification/pull/1764
17 return std::nullopt;
18 }
19 }
20
26
28
30 {
31 protected:
32 std::unique_ptr<ValidityPeriodsCache> validity_periods;
33
34 public:
35 static constexpr auto SECURITY_SCHEME_NAME = "user_cert";
36
39
40 std::unique_ptr<AuthnIdentity> authenticate(
42 const std::shared_ptr<ccf::RpcContext>& ctx,
43 std::string& error_reason) override;
44
45 std::optional<OpenAPISecuritySchema> get_openapi_security_schema()
46 const override
47 {
48 return get_cert_based_security_schema();
49 }
50
51 virtual std::string get_security_scheme_name() override
52 {
54 };
55 };
56
62
64 {
65 protected:
66 std::unique_ptr<ValidityPeriodsCache> validity_periods;
67
68 public:
69 static constexpr auto SECURITY_SCHEME_NAME = "member_cert";
70
73
74 std::unique_ptr<AuthnIdentity> authenticate(
76 const std::shared_ptr<ccf::RpcContext>& ctx,
77 std::string& error_reason) override;
78
79 std::optional<OpenAPISecuritySchema> get_openapi_security_schema()
80 const override
81 {
82 return get_cert_based_security_schema();
83 }
84
85 virtual std::string get_security_scheme_name() override
86 {
88 };
89 };
90
95
97 {
98 public:
99 static constexpr auto SECURITY_SCHEME_NAME = "node_cert";
100
101 std::unique_ptr<AuthnIdentity> authenticate(
103 const std::shared_ptr<ccf::RpcContext>& ctx,
104 std::string& error_reason) override;
105
106 std::optional<OpenAPISecuritySchema> get_openapi_security_schema()
107 const override
108 {
109 return get_cert_based_security_schema();
110 }
111
112 virtual std::string get_security_scheme_name() override
113 {
115 };
116 };
117
119 {
120 // Certificate as a vector of DER-encoded bytes
121 std::vector<uint8_t> cert;
122 };
123
125 {
126 protected:
127 std::unique_ptr<ValidityPeriodsCache> validity_periods;
128
129 public:
130 static constexpr auto SECURITY_SCHEME_NAME = "any_cert";
131
134
135 std::unique_ptr<AuthnIdentity> authenticate(
137 const std::shared_ptr<ccf::RpcContext>& ctx,
138 std::string& error_reason) override;
139
140 std::optional<OpenAPISecuritySchema> get_openapi_security_schema()
141 const override
142 {
143 return get_cert_based_security_schema();
144 }
145
146 virtual std::string get_security_scheme_name() override
147 {
149 };
150 };
151}
Definition cert_auth.h:125
std::optional< OpenAPISecuritySchema > get_openapi_security_schema() const override
Definition cert_auth.h:140
std::unique_ptr< ValidityPeriodsCache > validity_periods
Definition cert_auth.h:127
virtual std::string get_security_scheme_name() override
Definition cert_auth.h:146
AnyCertAuthnPolicy()
Definition cert_auth.cpp:209
static constexpr auto SECURITY_SCHEME_NAME
Definition cert_auth.h:130
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:215
Definition authentication_types.h:28
Definition cert_auth.h:64
std::unique_ptr< ValidityPeriodsCache > validity_periods
Definition cert_auth.h:66
MemberCertAuthnPolicy()
Definition cert_auth.cpp:138
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:144
virtual std::string get_security_scheme_name() override
Definition cert_auth.h:85
static constexpr auto SECURITY_SCHEME_NAME
Definition cert_auth.h:69
std::optional< OpenAPISecuritySchema > get_openapi_security_schema() const override
Definition cert_auth.h:79
Definition cert_auth.h:97
std::optional< OpenAPISecuritySchema > get_openapi_security_schema() const override
Definition cert_auth.h:106
static constexpr auto SECURITY_SCHEME_NAME
Definition cert_auth.h:99
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:170
virtual std::string get_security_scheme_name() override
Definition cert_auth.h:112
Definition cert_auth.h:30
std::optional< OpenAPISecuritySchema > get_openapi_security_schema() const override
Definition cert_auth.h:45
virtual std::string get_security_scheme_name() override
Definition cert_auth.h:51
std::unique_ptr< ValidityPeriodsCache > validity_periods
Definition cert_auth.h:32
static constexpr auto SECURITY_SCHEME_NAME
Definition cert_auth.h:35
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:106
UserCertAuthnPolicy()
Definition cert_auth.cpp:100
Definition tx.h:160
Definition app_interface.h:14
Definition cert_auth.h:119
std::vector< uint8_t > cert
Definition cert_auth.h:121
Definition authentication_types.h:19
Definition cert_auth.h:58
MemberId member_id
Definition cert_auth.h:60
Definition cert_auth.h:92
ccf::NodeId node_id
Definition cert_auth.h:93
Definition cert_auth.h:22
UserId user_id
Definition cert_auth.h:24
Definition cert_auth.cpp:17