Sourcemeta Core 0.0.0
Loading...
Searching...
No Matches
oidc_id_token.h
1#ifndef SOURCEMETA_CORE_OIDC_ID_TOKEN_H_
2#define SOURCEMETA_CORE_OIDC_ID_TOKEN_H_
3
4#ifndef SOURCEMETA_CORE_OIDC_EXPORT
5#include <sourcemeta/core/oidc_export.h>
6#endif
7
8#include <sourcemeta/core/jose.h>
9#include <sourcemeta/core/json.h>
10
11#include <chrono> // std::chrono::system_clock, std::chrono::seconds
12#include <optional> // std::optional
13#include <span> // std::span
14#include <string> // std::string
15#include <string_view> // std::string_view
16
17namespace sourcemeta::core {
18
33SOURCEMETA_CORE_OIDC_EXPORT
34auto oidc_parse_id_token(const JSON &token_response)
35 -> std::optional<std::string>;
36
43 std::string subject;
45 std::string issuer;
48 std::optional<std::string> authentication_context_class;
51 std::optional<std::chrono::system_clock::time_point> authentication_time;
52};
53
61 std::optional<std::string_view> nonce;
64 std::span<const std::string_view> acceptable_authentication_context_classes;
69 std::span<const std::string_view> trusted_audiences;
72 std::optional<std::chrono::seconds> maximum_authentication_age;
75 std::optional<std::chrono::seconds> maximum_issued_at_age;
78 std::optional<std::string_view> access_token;
81 std::optional<std::string_view> code;
92 bool require_code_hash{false};
93};
94
122SOURCEMETA_CORE_OIDC_EXPORT
124 const JWT &token, const JWKS &keys,
125 const std::span<const JWSAlgorithm> allowed_algorithms,
126 const std::string_view issuer, const std::string_view client_id,
127 const std::chrono::system_clock::time_point now,
128 const OIDCValidationOptions &options = {},
129 const JWTClockSkew clock_skew = {}) -> std::optional<OIDCIdentity>;
130
150SOURCEMETA_CORE_OIDC_EXPORT
152 JWKSProvider &provider, const JWT &token,
153 const std::span<const JWSAlgorithm> allowed_algorithms,
154 const std::string_view issuer, const std::string_view client_id,
155 const OIDCValidationOptions &options = {}) -> std::optional<OIDCIdentity>;
156
163 std::string_view issuer;
165 std::string_view subject;
168 std::string_view audience;
171 std::chrono::system_clock::time_point issued_at;
173 std::chrono::system_clock::time_point expiration;
176 std::optional<std::string_view> nonce;
179 std::optional<std::string_view> authorized_party;
182 std::optional<std::string_view> authentication_context_class;
184 std::optional<std::chrono::system_clock::time_point> authentication_time;
187 std::optional<std::string_view> access_token;
190 std::optional<std::string_view> code;
191};
192
215SOURCEMETA_CORE_OIDC_EXPORT
216auto oidc_mint_id_token(const OIDCIdTokenClaims &claims, const JWKPrivate &key,
217 const JWSAlgorithm algorithm)
218 -> std::optional<std::string>;
219
220} // namespace sourcemeta::core
221
222#endif
Definition jose_jwk_private.h:35
Definition jose_jwks.h:40
Definition jose_jwks_provider.h:32
Definition jose_jwt.h:38
JWSAlgorithm
Definition jose_algorithm.h:21
Definition json_value.h:39
std::chrono::system_clock::time_point issued_at
Definition oidc_id_token.h:171
std::optional< std::string_view > code
Definition oidc_id_token.h:190
std::optional< std::string_view > nonce
Definition oidc_id_token.h:61
std::span< const std::string_view > acceptable_authentication_context_classes
Definition oidc_id_token.h:64
std::string_view audience
Definition oidc_id_token.h:168
std::string issuer
The issuer that produced the token (OpenID Connect Core 1.0 Section 2).
Definition oidc_id_token.h:45
std::string subject
Definition oidc_id_token.h:43
std::optional< std::chrono::system_clock::time_point > authentication_time
Definition oidc_id_token.h:51
std::string_view subject
The subject identifier (OpenID Connect Core 1.0 Section 2), REQUIRED.
Definition oidc_id_token.h:165
std::optional< std::string_view > authentication_context_class
Definition oidc_id_token.h:182
std::optional< std::string_view > nonce
Definition oidc_id_token.h:176
std::optional< std::string > authentication_context_class
Definition oidc_id_token.h:48
std::optional< std::chrono::seconds > maximum_authentication_age
Definition oidc_id_token.h:72
std::string_view issuer
The issuer identifier (OpenID Connect Core 1.0 Section 2), REQUIRED.
Definition oidc_id_token.h:163
std::optional< std::string_view > code
Definition oidc_id_token.h:81
std::span< const std::string_view > trusted_audiences
Definition oidc_id_token.h:69
std::optional< std::chrono::seconds > maximum_issued_at_age
Definition oidc_id_token.h:75
std::optional< std::string_view > access_token
Definition oidc_id_token.h:187
std::optional< std::string_view > access_token
Definition oidc_id_token.h:78
std::optional< std::chrono::system_clock::time_point > authentication_time
The time the end user authenticated (OpenID Connect Core 1.0 Section 2).
Definition oidc_id_token.h:184
std::optional< std::string_view > authorized_party
Definition oidc_id_token.h:179
bool require_code_hash
Definition oidc_id_token.h:92
bool require_access_token_hash
Definition oidc_id_token.h:87
std::chrono::system_clock::time_point expiration
The time the token expires (OpenID Connect Core 1.0 Section 2), REQUIRED.
Definition oidc_id_token.h:173
SOURCEMETA_CORE_OIDC_EXPORT auto oidc_parse_id_token(const JSON &token_response) -> std::optional< std::string >
SOURCEMETA_CORE_OIDC_EXPORT auto oidc_mint_id_token(const OIDCIdTokenClaims &claims, const JWKPrivate &key, const JWSAlgorithm algorithm) -> std::optional< std::string >
SOURCEMETA_CORE_OIDC_EXPORT auto oidc_validate_id_token(const JWT &token, const JWKS &keys, const std::span< const JWSAlgorithm > allowed_algorithms, const std::string_view issuer, const std::string_view client_id, const std::chrono::system_clock::time_point now, const OIDCValidationOptions &options={}, const JWTClockSkew clock_skew={}) -> std::optional< OIDCIdentity >
Definition oidc_id_token.h:161
Definition oidc_id_token.h:40
Definition oidc_id_token.h:58