1#ifndef SOURCEMETA_CORE_OIDC_ID_TOKEN_H_
2#define SOURCEMETA_CORE_OIDC_ID_TOKEN_H_
4#ifndef SOURCEMETA_CORE_OIDC_EXPORT
5#include <sourcemeta/core/oidc_export.h>
8#include <sourcemeta/core/jose.h>
9#include <sourcemeta/core/json.h>
17namespace sourcemeta::core {
33SOURCEMETA_CORE_OIDC_EXPORT
35 -> std::optional<std::string>;
61 std::optional<std::string_view>
nonce;
81 std::optional<std::string_view>
code;
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,
129 const JWTClockSkew clock_skew = {}) -> std::optional<OIDCIdentity>;
150SOURCEMETA_CORE_OIDC_EXPORT
153 const std::span<const JWSAlgorithm> allowed_algorithms,
154 const std::string_view issuer,
const std::string_view client_id,
176 std::optional<std::string_view>
nonce;
190 std::optional<std::string_view>
code;
215SOURCEMETA_CORE_OIDC_EXPORT
218 -> std::optional<std::string>;
JWSAlgorithm
Definition jose_algorithm.h:21
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 >