Current section
Files
Jump to
Current section
Files
lib/oidc/provider_configuration/metadata.ex
defmodule ShinAuth.OIDC.ProviderConfiguration.Metadata do
@moduledoc """
OpenID Connect Provider Configuration
For details on the fields see:
* https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata
* https://datatracker.ietf.org/doc/html/draft-jones-oauth-discovery-01#section-4.1
* https://openid.net/specs/openid-connect-rpinitiated-1_0.html#OPMetadata
"""
@derive [Poison.Encoder]
defstruct [
:issuer,
:authorization_endpoint,
:token_endpoint,
:userinfo_endpoint,
:jwks_uri,
:registration_endpoint,
:scopes_supported,
:response_types_supported,
:response_modes_supported,
:grant_types_supported,
:acr_values_supported,
:subject_types_supported,
:id_token_signing_alg_values_supported,
:id_token_encryption_alg_values_supported,
:id_token_encryption_enc_values_supported,
:userinfo_signing_alg_values_supported,
:userinfo_encryption_alg_values_supported,
:userinfo_encryption_enc_values_supported,
:request_object_signing_alg_values_supported,
:request_object_encryption_alg_values_supported,
:request_object_encryption_enc_values_supported,
:token_endpoint_auth_methods_supported,
:token_endpoint_auth_signing_alg_values_supported,
:display_values_supported,
:claim_types_supported,
:claims_supported,
:service_documentation,
:claims_locales_supported,
:ui_locales_supported,
:claims_parameter_supported,
:request_parameter_supported,
:request_uri_parameter_supported,
:require_request_uri_registration,
:op_policy_uri,
:op_tos_uri,
:revocation_endpoint,
:revocation_endpoint_auth_methods_supported,
:revocation_endpoint_auth_signing_alg_values_supported,
:introspection_endpoint,
:introspection_endpoint_auth_methods_supported,
:introspection_endpoint_auth_signing_alg_values_supported,
:code_challenge_methods_supported,
:end_session_endpoint,
:require_pushed_authorization_requests,
:pushed_authorization_request_endpoint,
:authorization_response_iss_parameter_supported,
:authorization_signing_alg_values_supported,
:authorization_encryption_alg_values_supported,
:authorization_encryption_enc_values_supported,
:dpop_signing_alg_values_supported,
:require_signed_request_object,
:mtls_endpoint_aliases,
:tls_client_certificate_bound_access_tokens,
:extra_fields
]
@type t() :: %__MODULE__{
issuer: :uri_string.uri_string(),
authorization_endpoint: :uri_string.uri_string(),
token_endpoint: :uri_string.uri_string() | :undefined,
userinfo_endpoint: :uri_string.uri_string() | :undefined,
jwks_uri: :uri_string.uri_string() | :undefined,
registration_endpoint: :uri_string.uri_string() | :undefined,
scopes_supported: [String.t()] | :undefined,
response_types_supported: [String.t()],
response_modes_supported: [String.t()],
grant_types_supported: [String.t()],
acr_values_supported: [String.t()] | :undefined,
subject_types_supported: [:pairwise | :public],
id_token_signing_alg_values_supported: [String.t()],
id_token_encryption_alg_values_supported: [String.t()] | :undefined,
id_token_encryption_enc_values_supported: [String.t()] | :undefined,
userinfo_signing_alg_values_supported: [String.t()] | :undefined,
userinfo_encryption_alg_values_supported: [String.t()] | :undefined,
userinfo_encryption_enc_values_supported: [String.t()] | :undefined,
request_object_signing_alg_values_supported: [String.t()] | :undefined,
request_object_encryption_alg_values_supported: [String.t()] | :undefined,
request_object_encryption_enc_values_supported: [String.t()] | :undefined,
token_endpoint_auth_methods_supported: [String.t()],
token_endpoint_auth_signing_alg_values_supported: [String.t()] | :undefined,
display_values_supported: [String.t()] | :undefined,
claim_types_supported: [:normal | :aggregated | :distributed],
claims_supported: [String.t()] | :undefined,
service_documentation: :uri_string.uri_string() | :undefined,
claims_locales_supported: [String.t()] | :undefined,
ui_locales_supported: [String.t()] | :undefined,
claims_parameter_supported: boolean(),
request_parameter_supported: boolean(),
request_uri_parameter_supported: boolean(),
require_request_uri_registration: boolean(),
op_policy_uri: :uri_string.uri_string() | :undefined,
op_tos_uri: :uri_string.uri_string() | :undefined,
revocation_endpoint: :uri_string.uri_string() | :undefined,
revocation_endpoint_auth_methods_supported: [String.t()],
revocation_endpoint_auth_signing_alg_values_supported: [String.t()] | :undefined,
introspection_endpoint: :uri_string.uri_string() | :undefined,
introspection_endpoint_auth_methods_supported: [String.t()],
introspection_endpoint_auth_signing_alg_values_supported: [String.t()] | :undefined,
code_challenge_methods_supported: [String.t()] | :undefined,
end_session_endpoint: :uri_string.uri_string() | :undefined,
require_pushed_authorization_requests: boolean(),
pushed_authorization_request_endpoint: :uri_string.uri_string() | :undefined,
authorization_response_iss_parameter_supported: boolean(),
authorization_signing_alg_values_supported: [String.t()] | :undefined,
authorization_encryption_alg_values_supported: [String.t()] | :undefined,
authorization_encryption_enc_values_supported: [String.t()] | :undefined,
dpop_signing_alg_values_supported: [String.t()] | :undefined,
require_signed_request_object: boolean(),
mtls_endpoint_aliases: %{binary() => :uri_string.uri_string()},
tls_client_certificate_bound_access_tokens: boolean(),
extra_fields: %{String.t() => term()}
}
end