Sourcemeta Core 0.0.0
Loading...
Searching...
No Matches
oidc_metadata.h
1#ifndef SOURCEMETA_CORE_OIDC_METADATA_H_
2#define SOURCEMETA_CORE_OIDC_METADATA_H_
3
4#ifndef SOURCEMETA_CORE_OIDC_EXPORT
5#include <sourcemeta/core/oidc_export.h>
6#endif
7
8#include <sourcemeta/core/json.h>
9#include <sourcemeta/core/oauth.h>
10
11#include <optional> // std::optional
12#include <span> // std::span
13#include <string_view> // std::string_view
14
15namespace sourcemeta::core {
16
17#if defined(_MSC_VER)
18#pragma warning(disable : 4251)
19#endif
20
49class SOURCEMETA_CORE_OIDC_EXPORT OIDCProviderMetadata {
50public:
53 OIDCProviderMetadata(JSON &&data, const std::string_view issuer);
54
60
63 [[nodiscard]] static auto from(JSON &&data, const std::string_view issuer)
64 -> std::optional<OIDCProviderMetadata>;
65
90 [[nodiscard]] static auto from(OAuthServerMetadata &&oauth)
91 -> std::optional<OIDCProviderMetadata>;
92
94 [[nodiscard]] auto issuer() const -> std::string_view;
95
97 [[nodiscard]] auto authorization_endpoint() const
98 -> std::optional<std::string_view>;
99
101 [[nodiscard]] auto token_endpoint() const -> std::optional<std::string_view>;
102
104 [[nodiscard]] auto userinfo_endpoint() const
105 -> std::optional<std::string_view>;
106
109 [[nodiscard]] auto registration_endpoint() const
110 -> std::optional<std::string_view>;
111
114 [[nodiscard]] auto jwks_uri() const -> std::string_view;
115
118 [[nodiscard]] auto end_session_endpoint() const
119 -> std::optional<std::string_view>;
120
123 [[nodiscard]] auto check_session_iframe() const
124 -> std::optional<std::string_view>;
125
128 [[nodiscard]] auto supports_subject_type(const std::string_view value) const
129 -> bool;
130
133 [[nodiscard]] auto
134 supports_id_token_signing_alg(const std::string_view value) const -> bool;
135
138 [[nodiscard]] auto supports_response_type(const std::string_view value) const
139 -> bool;
140
144 [[nodiscard]] auto
145 supports_token_endpoint_auth_method(const std::string_view value) const
146 -> bool;
147
149 [[nodiscard]] auto supports_scope(const std::string_view value) const -> bool;
150
152 [[nodiscard]] auto supports_claim(const std::string_view value) const -> bool;
153
156 [[nodiscard]] auto supports_claims_parameter() const -> bool;
157
160 [[nodiscard]] auto oauth() const -> const OAuthServerMetadata &;
161
163 [[nodiscard]] auto data() const -> const JSON &;
164
165private:
166 OAuthServerMetadata oauth_;
167};
168
169#if defined(_MSC_VER)
170#pragma warning(default : 4251)
171#endif
172
184 std::string_view userinfo_endpoint;
187 std::string_view end_session_endpoint;
190 std::string_view check_session_iframe;
193 std::span<const std::string_view> subject_types_supported;
197 std::span<const std::string_view> id_token_signing_alg_values_supported;
200 std::span<const std::string_view> id_token_encryption_alg_values_supported;
203 std::span<const std::string_view> id_token_encryption_enc_values_supported;
206 std::span<const std::string_view> userinfo_signing_alg_values_supported;
209 std::span<const std::string_view> userinfo_encryption_alg_values_supported;
212 std::span<const std::string_view> userinfo_encryption_enc_values_supported;
215 std::span<const std::string_view> request_object_signing_alg_values_supported;
218 std::span<const std::string_view>
222 std::span<const std::string_view>
225 std::span<const std::string_view> claims_supported;
228 std::span<const std::string_view> acr_values_supported;
230 std::span<const std::string_view> claim_types_supported;
232 std::span<const std::string_view> display_values_supported;
234 std::span<const std::string_view> claims_locales_supported;
236 std::span<const std::string_view> ui_locales_supported;
249};
250
282SOURCEMETA_CORE_OIDC_EXPORT
284 -> std::optional<JSON>;
285
286} // namespace sourcemeta::core
287
288#endif
Definition json_value.h:39
Definition oauth_metadata.h:152
Definition oauth_metadata.h:363
std::string_view userinfo_endpoint
The UserInfo endpoint (OpenID Connect Discovery 1.0 Section 3).
Definition oidc_metadata.h:184
std::span< const std::string_view > userinfo_encryption_alg_values_supported
Definition oidc_metadata.h:209
auto registration_endpoint() const -> std::optional< std::string_view >
bool request_uri_parameter_supported
Definition oidc_metadata.h:245
bool claims_parameter_supported
Definition oidc_metadata.h:239
std::span< const std::string_view > display_values_supported
The supported display values (OpenID Connect Discovery 1.0 Section 3).
Definition oidc_metadata.h:232
std::span< const std::string_view > acr_values_supported
Definition oidc_metadata.h:228
auto end_session_endpoint() const -> std::optional< std::string_view >
static auto from(JSON &&data, const std::string_view issuer) -> std::optional< OIDCProviderMetadata >
std::span< const std::string_view > request_object_signing_alg_values_supported
Definition oidc_metadata.h:215
OIDCProviderMetadata(JSON &&data, const std::string_view issuer)
std::span< const std::string_view > id_token_encryption_alg_values_supported
Definition oidc_metadata.h:200
auto supports_response_type(const std::string_view value) const -> bool
std::string_view check_session_iframe
Definition oidc_metadata.h:190
std::span< const std::string_view > claims_supported
The supported claims (OpenID Connect Discovery 1.0 Section 3).
Definition oidc_metadata.h:225
std::span< const std::string_view > ui_locales_supported
The supported UI locales (OpenID Connect Discovery 1.0 Section 3).
Definition oidc_metadata.h:236
auto supports_claims_parameter() const -> bool
OAuthServerMetadataConfig base
Definition oidc_metadata.h:182
auto token_endpoint() const -> std::optional< std::string_view >
The token endpoint (OpenID Connect Discovery 1.0 Section 3).
auto supports_id_token_signing_alg(const std::string_view value) const -> bool
auto userinfo_endpoint() const -> std::optional< std::string_view >
The UserInfo endpoint (OpenID Connect Discovery 1.0 Section 3).
auto oauth() const -> const OAuthServerMetadata &
bool require_request_uri_registration
Definition oidc_metadata.h:248
auto supports_subject_type(const std::string_view value) const -> bool
bool request_parameter_supported
Definition oidc_metadata.h:242
auto supports_scope(const std::string_view value) const -> bool
Whether a scope is supported (OpenID Connect Discovery 1.0 Section 3).
auto authorization_endpoint() const -> std::optional< std::string_view >
The authorization endpoint (OpenID Connect Discovery 1.0 Section 3).
std::span< const std::string_view > userinfo_encryption_enc_values_supported
Definition oidc_metadata.h:212
std::span< const std::string_view > userinfo_signing_alg_values_supported
Definition oidc_metadata.h:206
std::string_view end_session_endpoint
Definition oidc_metadata.h:187
std::span< const std::string_view > request_object_encryption_alg_values_supported
Definition oidc_metadata.h:219
auto data() const -> const JSON &
The underlying document, for reaching members without a typed accessor.
auto issuer() const -> std::string_view
The issuer identifier (OpenID Connect Discovery 1.0 Section 3).
auto supports_claim(const std::string_view value) const -> bool
Whether a claim is supported (OpenID Connect Discovery 1.0 Section 3).
auto check_session_iframe() const -> std::optional< std::string_view >
std::span< const std::string_view > id_token_encryption_enc_values_supported
Definition oidc_metadata.h:203
std::span< const std::string_view > id_token_signing_alg_values_supported
Definition oidc_metadata.h:197
std::span< const std::string_view > claim_types_supported
The supported claim types (OpenID Connect Discovery 1.0 Section 3).
Definition oidc_metadata.h:230
std::span< const std::string_view > request_object_encryption_enc_values_supported
Definition oidc_metadata.h:223
auto supports_token_endpoint_auth_method(const std::string_view value) const -> bool
auto jwks_uri() const -> std::string_view
static auto from(OAuthServerMetadata &&oauth) -> std::optional< OIDCProviderMetadata >
std::span< const std::string_view > subject_types_supported
Definition oidc_metadata.h:193
OIDCProviderMetadata(OAuthServerMetadata &&oauth)
std::span< const std::string_view > claims_locales_supported
The supported claims locales (OpenID Connect Discovery 1.0 Section 3).
Definition oidc_metadata.h:234
SOURCEMETA_CORE_OIDC_EXPORT auto oidc_make_provider_metadata(const OIDCProviderMetadataConfig &config) -> std::optional< JSON >
Definition oidc_metadata.h:179