diff --git a/metadata_generated.go b/metadata_generated.go index fc49b20..f3c1282 100644 --- a/metadata_generated.go +++ b/metadata_generated.go @@ -11,294 +11,191 @@ import ( "github.com/vmihailenco/msgpack/v5" ) -type FederationEntityMetadata struct { - wasSet map[string]bool - FederationFetchEndpoint string `json:"federation_fetch_endpoint,omitempty"` - FederationListEndpoint string `json:"federation_list_endpoint,omitempty"` - FederationResolveEndpoint string `json:"federation_resolve_endpoint,omitempty"` - FederationTrustMarkStatusEndpoint string `json:"federation_trust_mark_status_endpoint,omitempty"` - FederationTrustMarkListEndpoint string `json:"federation_trust_mark_list_endpoint,omitempty"` - FederationTrustMarkEndpoint string `json:"federation_trust_mark_endpoint,omitempty"` - FederationHistoricalLKeysEndpoint string `json:"federation_historical_keys_endpoint,omitempty"` - Extra map[string]any `json:"-"` - DisplayName string `json:"display_name,omitempty"` - Description string `json:"description,omitempty"` - Keywords []string `json:"keywords,omitempty"` - Contacts []string `json:"contacts,omitempty"` - LogoURI string `json:"logo_uri,omitempty"` - PolicyURI string `json:"policy_uri,omitempty"` - InformationURI string `json:"information_uri,omitempty"` - OrganizationName string `json:"organization_name,omitempty"` - OrganizationURI string `json:"organization_uri,omitempty"` -} - -type federationEntityMetadataWithPtrs struct { - FederationFetchEndpoint *string `json:"federation_fetch_endpoint,omitempty"` - FederationListEndpoint *string `json:"federation_list_endpoint,omitempty"` - FederationResolveEndpoint *string `json:"federation_resolve_endpoint,omitempty"` - FederationTrustMarkStatusEndpoint *string `json:"federation_trust_mark_status_endpoint,omitempty"` - FederationTrustMarkListEndpoint *string `json:"federation_trust_mark_list_endpoint,omitempty"` - FederationTrustMarkEndpoint *string `json:"federation_trust_mark_endpoint,omitempty"` - FederationHistoricalLKeysEndpoint *string `json:"federation_historical_keys_endpoint,omitempty"` - Extra map[string]any `json:"-"` - DisplayName *string `json:"display_name,omitempty"` - Description *string `json:"description,omitempty"` - Keywords []string `json:"keywords,omitempty"` - Contacts []string `json:"contacts,omitempty"` - LogoURI *string `json:"logo_uri,omitempty"` - PolicyURI *string `json:"policy_uri,omitempty"` - InformationURI *string `json:"information_uri,omitempty"` - OrganizationName *string `json:"organization_name,omitempty"` - OrganizationURI *string `json:"organization_uri,omitempty"` -} - -// MarshalJSON implements the json.Marshaler interface -func (m FederationEntityMetadata) MarshalJSON() ([]byte, error) { - type Alias FederationEntityMetadata - explicitFields, err := json.Marshal(Alias(m)) - if err != nil { - return nil, errors.WithStack(err) - } - return extraMarshalHelper(explicitFields, m.Extra) -} - -// MarshalJSON implements the json.Marshaler interface -func (m federationEntityMetadataWithPtrs) MarshalJSON() ([]byte, error) { - type Alias federationEntityMetadataWithPtrs - explicitFields, err := json.Marshal(Alias(m)) - if err != nil { - return nil, errors.WithStack(err) - } - return extraMarshalHelper(explicitFields, m.Extra) -} - -func (m *FederationEntityMetadata) fromPointers(withPtrs federationEntityMetadataWithPtrs) { - - m.wasSet = make(map[string]bool) - - valOrig := reflect.ValueOf(m).Elem() - valWithPtrs := reflect.ValueOf(withPtrs) - typeWithPtrs := valWithPtrs.Type() - - for i := 0; i < typeWithPtrs.NumField(); i++ { - ptrField := valWithPtrs.Field(i) - fieldName := typeWithPtrs.Field(i).Name - - origField := valOrig.FieldByName(fieldName) - if !origField.IsValid() || !origField.CanSet() { - continue - } - - if !ptrField.IsNil() { - m.wasSet[fieldName] = true - } - if ptrField.Kind() == reflect.Ptr && origField.Kind() != reflect.Ptr { - if !ptrField.IsNil() { - origField.Set(ptrField.Elem()) - } - } else { - origField.Set(ptrField) - } - } - for k, _ := range m.Extra { - m.wasSet[k] = true - } -} - -// UnmarshalJSON implements the json.Unmarshaler interface -func (m *FederationEntityMetadata) UnmarshalJSON(data []byte) error { - var withPtrs federationEntityMetadataWithPtrs - if err := json.Unmarshal(data, &withPtrs); err != nil { - return err - } - m.fromPointers(withPtrs) - return nil -} - -// UnmarshalJSON implements the json.Unmarshaler interface -func (m *federationEntityMetadataWithPtrs) UnmarshalJSON(data []byte) error { - type Alias federationEntityMetadataWithPtrs - mm := Alias(*m) - - extra, err := unmarshalWithExtra(data, &mm) - if err != nil { - return errors.WithStack(err) - } - mm.Extra = extra - *m = federationEntityMetadataWithPtrs(mm) - return nil -} - -// UnmarshalMsgpack implements the msgpack.Unmarshaler interface -func (m *federationEntityMetadataWithPtrs) UnmarshalMsgpack(data []byte) error { - type Alias federationEntityMetadataWithPtrs - mm := Alias(*m) - err := msgpack.Unmarshal(data, &mm) - if err != nil { - return errors.WithStack(err) - } - *m = federationEntityMetadataWithPtrs(mm) - return nil -} - -// UnmarshalMsgpack implements the msgpack.Unmarshaler interface -func (m *FederationEntityMetadata) UnmarshalMsgpack(data []byte) error { - var withPtrs federationEntityMetadataWithPtrs - if err := msgpack.Unmarshal(data, &withPtrs); err != nil { - return err - } - m.fromPointers(withPtrs) - return nil -} - -// ApplyPolicy applies a MetadataPolicy to the FederationEntityMetadata -func (m FederationEntityMetadata) ApplyPolicy(policy MetadataPolicy) (any, error) { - return applyPolicy(&m, policy, "federation_entity") -} - type OpenIDRelyingPartyMetadata struct { - wasSet map[string]bool - Scope string `json:"scope,omitempty"` - RedirectURIS []string `json:"redirect_uris,omitempty"` - ResponseTypes []string `json:"response_types,omitempty"` - GrantTypes []string `json:"grant_types,omitempty"` - ApplicationType string `json:"application_type,omitempty"` - Contacts []string `json:"contacts,omitempty"` - ClientName string `json:"client_name,omitempty"` - LogoURI string `json:"logo_uri,omitempty"` - ClientURI string `json:"client_uri,omitempty"` - PolicyURI string `json:"policy_uri,omitempty"` - TOSURI string `json:"tos_uri,omitempty"` - SectorIdentifierURI string `json:"sector_identifier_uri,omitempty"` - SubjectType string `json:"subject_type,omitempty"` - IDTokenSignedResponseAlg string `json:"id_token_signed_response_alg,omitempty"` - IDTokenEncryptedResponseAlg string `json:"id_token_encrypted_response_alg,omitempty"` - IDTokenEncryptedResponseEnc string `json:"id_token_encrypted_response_enc,omitempty"` - UserinfoSignedResponseAlg string `json:"userinfo_signed_response_alg,omitempty"` - UserinfoEncryptedResponseAlg string `json:"userinfo_encrypted_response_alg,omitempty"` - UserinfoEncryptedResponseEnc string `json:"userinfo_encrypted_response_enc,omitempty"` - RequestObjectSigningAlg string `json:"request_object_signing_alg,omitempty"` - RequestObjectEncryptionAlg string `json:"request_object_encryption_alg,omitempty"` - RequestObjectEncryptionEnc string `json:"request_object_encryption_enc,omitempty"` - TokenEndpointAuthMethod string `json:"token_endpoint_auth_method,omitempty"` - TokenEndpointAuthSigningAlg string `json:"token_endpoint_auth_signing_alg,omitempty"` - DefaultMaxAge int64 `json:"default_max_age,omitempty"` - RequireAuthTime bool `json:"require_auth_time,omitempty"` - DefaultACRValues []string `json:"default_acr_values,omitempty"` - InitiateLoginURI string `json:"initiate_login_uri,omitempty"` - RequestURIs []string `json:"request_uris,omitempty"` - SoftwareID string `json:"software_id,omitempty"` - SoftwareVersion string `json:"software_version,omitempty"` - ClientID string `json:"client_id,omitempty"` - ClientSecret string `json:"client_secret,omitempty"` - ClientIDIssuedAt int64 `json:"client_id_issued_at,omitempty"` - ClientSecretExpiresAt int64 `json:"client_secret_expires_at,omitempty"` - RegistrationAccessToken string `json:"registration_access_token,omitempty"` - RegistrationClientURI string `json:"registration_client_uri,omitempty"` - ClaimsRedirectURIs []string `json:"claims_redirect_uris,omitempty"` - NFVTokenSignedResponseAlg string `json:"nfv_token_signed_response_alg,omitempty"` - NFVTokenEncryptedResponseAlg string `json:"nfv_token_encrypted_response_alg,omitempty"` - NFVTokenEncryptedResponseEnc string `json:"nfv_token_encrypted_response_enc,omitempty"` - TLSClientCertificateBoundAccessTokens bool `json:"tls_client_certificate_bound_access_tokens,omitempty"` - TLSClientAuthSubjectDN string `json:"tls_client_auth_subject_dn,omitempty"` - TLSClientAuthSANDNS string `json:"tls_client_auth_san_dns,omitempty"` - TLSClientAuthSANURI string `json:"tls_client_auth_san_uri,omitempty"` - TLSClientAuthSANIP string `json:"tls_client_auth_san_ip,omitempty"` - TLSClientAuthSANEMAIL string `json:"tls_client_auth_san_email,omitempty"` - RequireSignedRequestObject bool `json:"require_signed_request_object,omitempty"` - RequirePushedAuthorizationRequests bool `json:"require_pushed_authorization_requests,omitempty"` - IntrospectionSignedResponseAlg string `json:"introspection_signed_response_alg,omitempty"` - IntrospectionEncryptedResponseAlg string `json:"introspection_encrypted_response_alg,omitempty"` - IntrospectionEncryptedResponseEnc string `json:"introspection_encrypted_response_enc,omitempty"` - FrontchannelLogoutURI string `json:"frontchannel_logout_uri,omitempty"` - FrontchannelLogoutSessionRequired bool `json:"frontchannel_logout_session_required,omitempty"` - BackchannelLogoutURI string `json:"backchannel_logout_uri,omitempty"` - BackchannelLogoutSessionRequired bool `json:"backchannel_logout_session_required,omitempty"` - PostLogoutRedirectURIs []string `json:"post_logout_redirect_uris,omitempty"` - AuthorizationDetailsTypes []string `json:"authorization_details_types,omitempty"` - ClientRegistrationTypes []string `json:"client_registration_types"` - Extra map[string]any `json:"-"` - SignedJWKSURI string `json:"signed_jwks_uri,omitempty"` - JWKSURI string `json:"jwks_uri,omitempty"` - JWKS *jwx.JWKS `json:"jwks,omitempty"` - DisplayName string `json:"display_name,omitempty"` - Description string `json:"description,omitempty"` - Keywords []string `json:"keywords,omitempty"` - InformationURI string `json:"information_uri,omitempty"` - OrganizationName string `json:"organization_name,omitempty"` - OrganizationURI string `json:"organization_uri,omitempty"` + wasSet map[string]bool + Scope string `json:"scope,omitempty"` + RedirectURIS []string `json:"redirect_uris,omitempty"` + ResponseTypes []string `json:"response_types,omitempty"` + GrantTypes []string `json:"grant_types,omitempty"` + ApplicationType string `json:"application_type,omitempty"` + Contacts []string `json:"contacts,omitempty"` + ClientName string `json:"client_name,omitempty"` + LogoURI string `json:"logo_uri,omitempty"` + ClientURI string `json:"client_uri,omitempty"` + PolicyURI string `json:"policy_uri,omitempty"` + TOSURI string `json:"tos_uri,omitempty"` + SectorIdentifierURI string `json:"sector_identifier_uri,omitempty"` + SubjectType string `json:"subject_type,omitempty"` + SubjectTypesSupported []string `json:"subject_types_supported,omitempty"` + IDTokenSignedResponseAlg string `json:"id_token_signed_response_alg,omitempty"` + IDTokenSigningAlgValuesSupported []string `json:"id_token_signing_alg_values_supported,omitempty"` + IDTokenEncryptedResponseAlg string `json:"id_token_encrypted_response_alg,omitempty"` + IDTokenEncryptionAlgValuesSupported []string `json:"id_token_encryption_alg_values_supported,omitempty"` + IDTokenEncryptedResponseEnc string `json:"id_token_encrypted_response_enc,omitempty"` + IDTokenEncryptionEncValuesSupported []string `json:"id_token_encryption_enc_values_supported,omitempty"` + UserinfoSignedResponseAlg string `json:"userinfo_signed_response_alg,omitempty"` + UserinfoSigningAlgValuesSupported []string `json:"userinfo_signing_alg_values_supported,omitempty"` + UserinfoEncryptedResponseAlg string `json:"userinfo_encrypted_response_alg,omitempty"` + UserinfoEncryptionAlgValuesSupported []string `json:"userinfo_encryption_alg_values_supported,omitempty"` + UserinfoEncryptedResponseEnc string `json:"userinfo_encrypted_response_enc,omitempty"` + UserinfoEncryptionEncValuesSupported []string `json:"userinfo_encryption_enc_values_supported,omitempty"` + RequestObjectSigningAlg string `json:"request_object_signing_alg,omitempty"` + RequestObjectSigningAlgValuesSupported []string `json:"request_object_signing_alg_values_supported,omitempty"` + RequestObjectEncryptionAlg string `json:"request_object_encryption_alg,omitempty"` + RequestObjectEncryptionAlgValuesSupported []string `json:"request_object_encryption_alg_values_supported,omitempty"` + RequestObjectEncryptionEnc string `json:"request_object_encryption_enc,omitempty"` + RequestObjectEncryptionEncValuesSupported []string `json:"request_object_encryption_enc_values_supported,omitempty"` + TokenEndpointAuthMethod string `json:"token_endpoint_auth_method,omitempty"` + TokenEndpointAuthMethodsSupported []string `json:"token_endpoint_auth_methods_supported,omitempty"` + TokenEndpointAuthSigningAlg string `json:"token_endpoint_auth_signing_alg,omitempty"` + TokenEndpointAuthSigningAlgValuesSupported []string `json:"token_endpoint_auth_signing_alg_values_supported,omitempty"` + AuthorizationSignedResponseAlg string `json:"authorization_signed_response_alg,omitempty"` + AuthorizationSigningAlgValuesSupported []string `json:"authorization_signing_alg_values_supported,omitempty"` + AuthorizationEncryptedResponseAlg string `json:"authorization_encrypted_response_alg,omitempty"` + AuthorizationEncryptionAlgValuesSupported []string `json:"authorization_encryption_alg_values_supported,omitempty"` + AuthorizationEncryptedResponseEnc string `json:"authorization_encrypted_response_enc,omitempty"` + AuthorizationEncryptionEncValuesSupported []string `json:"authorization_encryption_enc_values_supported,omitempty"` + DefaultMaxAge int64 `json:"default_max_age,omitempty"` + RequireAuthTime bool `json:"require_auth_time,omitempty"` + DefaultACRValues []string `json:"default_acr_values,omitempty"` + InitiateLoginURI string `json:"initiate_login_uri,omitempty"` + RequestURIs []string `json:"request_uris,omitempty"` + SoftwareID string `json:"software_id,omitempty"` + SoftwareVersion string `json:"software_version,omitempty"` + ClientID string `json:"client_id,omitempty"` + ClientSecret string `json:"client_secret,omitempty"` + ClientIDIssuedAt int64 `json:"client_id_issued_at,omitempty"` + ClientSecretExpiresAt int64 `json:"client_secret_expires_at,omitempty"` + RegistrationAccessToken string `json:"registration_access_token,omitempty"` + RegistrationClientURI string `json:"registration_client_uri,omitempty"` + ClaimsRedirectURIs []string `json:"claims_redirect_uris,omitempty"` + NFVTokenSignedResponseAlg string `json:"nfv_token_signed_response_alg,omitempty"` + NFVTokenEncryptedResponseAlg string `json:"nfv_token_encrypted_response_alg,omitempty"` + NFVTokenEncryptedResponseEnc string `json:"nfv_token_encrypted_response_enc,omitempty"` + TLSClientCertificateBoundAccessTokens bool `json:"tls_client_certificate_bound_access_tokens,omitempty"` + TLSClientAuthSubjectDN string `json:"tls_client_auth_subject_dn,omitempty"` + TLSClientAuthSANDNS string `json:"tls_client_auth_san_dns,omitempty"` + TLSClientAuthSANURI string `json:"tls_client_auth_san_uri,omitempty"` + TLSClientAuthSANIP string `json:"tls_client_auth_san_ip,omitempty"` + TLSClientAuthSANEMAIL string `json:"tls_client_auth_san_email,omitempty"` + RequireSignedRequestObject bool `json:"require_signed_request_object,omitempty"` + RequirePushedAuthorizationRequests bool `json:"require_pushed_authorization_requests,omitempty"` + IntrospectionSignedResponseAlg string `json:"introspection_signed_response_alg,omitempty"` + IntrospectionSigningAlgValuesSupported []string `json:"introspection_signing_alg_values_supported,omitempty"` + IntrospectionEncryptedResponseAlg string `json:"introspection_encrypted_response_alg,omitempty"` + IntrospectionEncryptionAlgValuesSupported []string `json:"introspection_encryption_alg_values_supported,omitempty"` + IntrospectionEncryptedResponseEnc string `json:"introspection_encrypted_response_enc,omitempty"` + IntrospectionEncryptionEncValuesSupported []string `json:"introspection_encryption_enc_values_supported,omitempty"` + FrontchannelLogoutURI string `json:"frontchannel_logout_uri,omitempty"` + FrontchannelLogoutSessionRequired bool `json:"frontchannel_logout_session_required,omitempty"` + BackchannelLogoutURI string `json:"backchannel_logout_uri,omitempty"` + BackchannelLogoutSessionRequired bool `json:"backchannel_logout_session_required,omitempty"` + PostLogoutRedirectURIs []string `json:"post_logout_redirect_uris,omitempty"` + AuthorizationDetailsTypes []string `json:"authorization_details_types,omitempty"` + ClientRegistrationTypes []string `json:"client_registration_types"` + Extra map[string]any `json:"-"` + SignedJWKSURI string `json:"signed_jwks_uri,omitempty"` + JWKSURI string `json:"jwks_uri,omitempty"` + JWKS *jwx.JWKS `json:"jwks,omitempty"` + DisplayName string `json:"display_name,omitempty"` + Description string `json:"description,omitempty"` + Keywords []string `json:"keywords,omitempty"` + InformationURI string `json:"information_uri,omitempty"` + OrganizationName string `json:"organization_name,omitempty"` + OrganizationURI string `json:"organization_uri,omitempty"` } type openIDRelyingPartyMetadataWithPtrs struct { - Scope *string `json:"scope,omitempty"` - RedirectURIS []string `json:"redirect_uris,omitempty"` - ResponseTypes []string `json:"response_types,omitempty"` - GrantTypes []string `json:"grant_types,omitempty"` - ApplicationType *string `json:"application_type,omitempty"` - Contacts []string `json:"contacts,omitempty"` - ClientName *string `json:"client_name,omitempty"` - LogoURI *string `json:"logo_uri,omitempty"` - ClientURI *string `json:"client_uri,omitempty"` - PolicyURI *string `json:"policy_uri,omitempty"` - TOSURI *string `json:"tos_uri,omitempty"` - SectorIdentifierURI *string `json:"sector_identifier_uri,omitempty"` - SubjectType *string `json:"subject_type,omitempty"` - IDTokenSignedResponseAlg *string `json:"id_token_signed_response_alg,omitempty"` - IDTokenEncryptedResponseAlg *string `json:"id_token_encrypted_response_alg,omitempty"` - IDTokenEncryptedResponseEnc *string `json:"id_token_encrypted_response_enc,omitempty"` - UserinfoSignedResponseAlg *string `json:"userinfo_signed_response_alg,omitempty"` - UserinfoEncryptedResponseAlg *string `json:"userinfo_encrypted_response_alg,omitempty"` - UserinfoEncryptedResponseEnc *string `json:"userinfo_encrypted_response_enc,omitempty"` - RequestObjectSigningAlg *string `json:"request_object_signing_alg,omitempty"` - RequestObjectEncryptionAlg *string `json:"request_object_encryption_alg,omitempty"` - RequestObjectEncryptionEnc *string `json:"request_object_encryption_enc,omitempty"` - TokenEndpointAuthMethod *string `json:"token_endpoint_auth_method,omitempty"` - TokenEndpointAuthSigningAlg *string `json:"token_endpoint_auth_signing_alg,omitempty"` - DefaultMaxAge *int64 `json:"default_max_age,omitempty"` - RequireAuthTime *bool `json:"require_auth_time,omitempty"` - DefaultACRValues []string `json:"default_acr_values,omitempty"` - InitiateLoginURI *string `json:"initiate_login_uri,omitempty"` - RequestURIs []string `json:"request_uris,omitempty"` - SoftwareID *string `json:"software_id,omitempty"` - SoftwareVersion *string `json:"software_version,omitempty"` - ClientID *string `json:"client_id,omitempty"` - ClientSecret *string `json:"client_secret,omitempty"` - ClientIDIssuedAt *int64 `json:"client_id_issued_at,omitempty"` - ClientSecretExpiresAt *int64 `json:"client_secret_expires_at,omitempty"` - RegistrationAccessToken *string `json:"registration_access_token,omitempty"` - RegistrationClientURI *string `json:"registration_client_uri,omitempty"` - ClaimsRedirectURIs []string `json:"claims_redirect_uris,omitempty"` - NFVTokenSignedResponseAlg *string `json:"nfv_token_signed_response_alg,omitempty"` - NFVTokenEncryptedResponseAlg *string `json:"nfv_token_encrypted_response_alg,omitempty"` - NFVTokenEncryptedResponseEnc *string `json:"nfv_token_encrypted_response_enc,omitempty"` - TLSClientCertificateBoundAccessTokens *bool `json:"tls_client_certificate_bound_access_tokens,omitempty"` - TLSClientAuthSubjectDN *string `json:"tls_client_auth_subject_dn,omitempty"` - TLSClientAuthSANDNS *string `json:"tls_client_auth_san_dns,omitempty"` - TLSClientAuthSANURI *string `json:"tls_client_auth_san_uri,omitempty"` - TLSClientAuthSANIP *string `json:"tls_client_auth_san_ip,omitempty"` - TLSClientAuthSANEMAIL *string `json:"tls_client_auth_san_email,omitempty"` - RequireSignedRequestObject *bool `json:"require_signed_request_object,omitempty"` - RequirePushedAuthorizationRequests *bool `json:"require_pushed_authorization_requests,omitempty"` - IntrospectionSignedResponseAlg *string `json:"introspection_signed_response_alg,omitempty"` - IntrospectionEncryptedResponseAlg *string `json:"introspection_encrypted_response_alg,omitempty"` - IntrospectionEncryptedResponseEnc *string `json:"introspection_encrypted_response_enc,omitempty"` - FrontchannelLogoutURI *string `json:"frontchannel_logout_uri,omitempty"` - FrontchannelLogoutSessionRequired *bool `json:"frontchannel_logout_session_required,omitempty"` - BackchannelLogoutURI *string `json:"backchannel_logout_uri,omitempty"` - BackchannelLogoutSessionRequired *bool `json:"backchannel_logout_session_required,omitempty"` - PostLogoutRedirectURIs []string `json:"post_logout_redirect_uris,omitempty"` - AuthorizationDetailsTypes []string `json:"authorization_details_types,omitempty"` - ClientRegistrationTypes []string `json:"client_registration_types"` - Extra map[string]any `json:"-"` - SignedJWKSURI *string `json:"signed_jwks_uri,omitempty"` - JWKSURI *string `json:"jwks_uri,omitempty"` - JWKS *jwx.JWKS `json:"jwks,omitempty"` - DisplayName *string `json:"display_name,omitempty"` - Description *string `json:"description,omitempty"` - Keywords []string `json:"keywords,omitempty"` - InformationURI *string `json:"information_uri,omitempty"` - OrganizationName *string `json:"organization_name,omitempty"` - OrganizationURI *string `json:"organization_uri,omitempty"` + Scope *string `json:"scope,omitempty"` + RedirectURIS []string `json:"redirect_uris,omitempty"` + ResponseTypes []string `json:"response_types,omitempty"` + GrantTypes []string `json:"grant_types,omitempty"` + ApplicationType *string `json:"application_type,omitempty"` + Contacts []string `json:"contacts,omitempty"` + ClientName *string `json:"client_name,omitempty"` + LogoURI *string `json:"logo_uri,omitempty"` + ClientURI *string `json:"client_uri,omitempty"` + PolicyURI *string `json:"policy_uri,omitempty"` + TOSURI *string `json:"tos_uri,omitempty"` + SectorIdentifierURI *string `json:"sector_identifier_uri,omitempty"` + SubjectType *string `json:"subject_type,omitempty"` + SubjectTypesSupported []string `json:"subject_types_supported,omitempty"` + IDTokenSignedResponseAlg *string `json:"id_token_signed_response_alg,omitempty"` + IDTokenSigningAlgValuesSupported []string `json:"id_token_signing_alg_values_supported,omitempty"` + IDTokenEncryptedResponseAlg *string `json:"id_token_encrypted_response_alg,omitempty"` + IDTokenEncryptionAlgValuesSupported []string `json:"id_token_encryption_alg_values_supported,omitempty"` + IDTokenEncryptedResponseEnc *string `json:"id_token_encrypted_response_enc,omitempty"` + IDTokenEncryptionEncValuesSupported []string `json:"id_token_encryption_enc_values_supported,omitempty"` + UserinfoSignedResponseAlg *string `json:"userinfo_signed_response_alg,omitempty"` + UserinfoSigningAlgValuesSupported []string `json:"userinfo_signing_alg_values_supported,omitempty"` + UserinfoEncryptedResponseAlg *string `json:"userinfo_encrypted_response_alg,omitempty"` + UserinfoEncryptionAlgValuesSupported []string `json:"userinfo_encryption_alg_values_supported,omitempty"` + UserinfoEncryptedResponseEnc *string `json:"userinfo_encrypted_response_enc,omitempty"` + UserinfoEncryptionEncValuesSupported []string `json:"userinfo_encryption_enc_values_supported,omitempty"` + RequestObjectSigningAlg *string `json:"request_object_signing_alg,omitempty"` + RequestObjectSigningAlgValuesSupported []string `json:"request_object_signing_alg_values_supported,omitempty"` + RequestObjectEncryptionAlg *string `json:"request_object_encryption_alg,omitempty"` + RequestObjectEncryptionAlgValuesSupported []string `json:"request_object_encryption_alg_values_supported,omitempty"` + RequestObjectEncryptionEnc *string `json:"request_object_encryption_enc,omitempty"` + RequestObjectEncryptionEncValuesSupported []string `json:"request_object_encryption_enc_values_supported,omitempty"` + TokenEndpointAuthMethod *string `json:"token_endpoint_auth_method,omitempty"` + TokenEndpointAuthMethodsSupported []string `json:"token_endpoint_auth_methods_supported,omitempty"` + TokenEndpointAuthSigningAlg *string `json:"token_endpoint_auth_signing_alg,omitempty"` + TokenEndpointAuthSigningAlgValuesSupported []string `json:"token_endpoint_auth_signing_alg_values_supported,omitempty"` + AuthorizationSignedResponseAlg *string `json:"authorization_signed_response_alg,omitempty"` + AuthorizationSigningAlgValuesSupported []string `json:"authorization_signing_alg_values_supported,omitempty"` + AuthorizationEncryptedResponseAlg *string `json:"authorization_encrypted_response_alg,omitempty"` + AuthorizationEncryptionAlgValuesSupported []string `json:"authorization_encryption_alg_values_supported,omitempty"` + AuthorizationEncryptedResponseEnc *string `json:"authorization_encrypted_response_enc,omitempty"` + AuthorizationEncryptionEncValuesSupported []string `json:"authorization_encryption_enc_values_supported,omitempty"` + DefaultMaxAge *int64 `json:"default_max_age,omitempty"` + RequireAuthTime *bool `json:"require_auth_time,omitempty"` + DefaultACRValues []string `json:"default_acr_values,omitempty"` + InitiateLoginURI *string `json:"initiate_login_uri,omitempty"` + RequestURIs []string `json:"request_uris,omitempty"` + SoftwareID *string `json:"software_id,omitempty"` + SoftwareVersion *string `json:"software_version,omitempty"` + ClientID *string `json:"client_id,omitempty"` + ClientSecret *string `json:"client_secret,omitempty"` + ClientIDIssuedAt *int64 `json:"client_id_issued_at,omitempty"` + ClientSecretExpiresAt *int64 `json:"client_secret_expires_at,omitempty"` + RegistrationAccessToken *string `json:"registration_access_token,omitempty"` + RegistrationClientURI *string `json:"registration_client_uri,omitempty"` + ClaimsRedirectURIs []string `json:"claims_redirect_uris,omitempty"` + NFVTokenSignedResponseAlg *string `json:"nfv_token_signed_response_alg,omitempty"` + NFVTokenEncryptedResponseAlg *string `json:"nfv_token_encrypted_response_alg,omitempty"` + NFVTokenEncryptedResponseEnc *string `json:"nfv_token_encrypted_response_enc,omitempty"` + TLSClientCertificateBoundAccessTokens *bool `json:"tls_client_certificate_bound_access_tokens,omitempty"` + TLSClientAuthSubjectDN *string `json:"tls_client_auth_subject_dn,omitempty"` + TLSClientAuthSANDNS *string `json:"tls_client_auth_san_dns,omitempty"` + TLSClientAuthSANURI *string `json:"tls_client_auth_san_uri,omitempty"` + TLSClientAuthSANIP *string `json:"tls_client_auth_san_ip,omitempty"` + TLSClientAuthSANEMAIL *string `json:"tls_client_auth_san_email,omitempty"` + RequireSignedRequestObject *bool `json:"require_signed_request_object,omitempty"` + RequirePushedAuthorizationRequests *bool `json:"require_pushed_authorization_requests,omitempty"` + IntrospectionSignedResponseAlg *string `json:"introspection_signed_response_alg,omitempty"` + IntrospectionSigningAlgValuesSupported []string `json:"introspection_signing_alg_values_supported,omitempty"` + IntrospectionEncryptedResponseAlg *string `json:"introspection_encrypted_response_alg,omitempty"` + IntrospectionEncryptionAlgValuesSupported []string `json:"introspection_encryption_alg_values_supported,omitempty"` + IntrospectionEncryptedResponseEnc *string `json:"introspection_encrypted_response_enc,omitempty"` + IntrospectionEncryptionEncValuesSupported []string `json:"introspection_encryption_enc_values_supported,omitempty"` + FrontchannelLogoutURI *string `json:"frontchannel_logout_uri,omitempty"` + FrontchannelLogoutSessionRequired *bool `json:"frontchannel_logout_session_required,omitempty"` + BackchannelLogoutURI *string `json:"backchannel_logout_uri,omitempty"` + BackchannelLogoutSessionRequired *bool `json:"backchannel_logout_session_required,omitempty"` + PostLogoutRedirectURIs []string `json:"post_logout_redirect_uris,omitempty"` + AuthorizationDetailsTypes []string `json:"authorization_details_types,omitempty"` + ClientRegistrationTypes []string `json:"client_registration_types"` + Extra map[string]any `json:"-"` + SignedJWKSURI *string `json:"signed_jwks_uri,omitempty"` + JWKSURI *string `json:"jwks_uri,omitempty"` + JWKS *jwx.JWKS `json:"jwks,omitempty"` + DisplayName *string `json:"display_name,omitempty"` + Description *string `json:"description,omitempty"` + Keywords []string `json:"keywords,omitempty"` + InformationURI *string `json:"information_uri,omitempty"` + OrganizationName *string `json:"organization_name,omitempty"` + OrganizationURI *string `json:"organization_uri,omitempty"` } // MarshalJSON implements the json.Marshaler interface @@ -836,3 +733,148 @@ func (m *OAuthProtectedResourceMetadata) UnmarshalMsgpack(data []byte) error { func (m OAuthProtectedResourceMetadata) ApplyPolicy(policy MetadataPolicy) (any, error) { return applyPolicy(&m, policy, "oauth_resource") } + +type FederationEntityMetadata struct { + wasSet map[string]bool + FederationFetchEndpoint string `json:"federation_fetch_endpoint,omitempty"` + FederationListEndpoint string `json:"federation_list_endpoint,omitempty"` + FederationResolveEndpoint string `json:"federation_resolve_endpoint,omitempty"` + FederationTrustMarkStatusEndpoint string `json:"federation_trust_mark_status_endpoint,omitempty"` + FederationTrustMarkListEndpoint string `json:"federation_trust_mark_list_endpoint,omitempty"` + FederationTrustMarkEndpoint string `json:"federation_trust_mark_endpoint,omitempty"` + FederationHistoricalLKeysEndpoint string `json:"federation_historical_keys_endpoint,omitempty"` + Extra map[string]any `json:"-"` + DisplayName string `json:"display_name,omitempty"` + Description string `json:"description,omitempty"` + Keywords []string `json:"keywords,omitempty"` + Contacts []string `json:"contacts,omitempty"` + LogoURI string `json:"logo_uri,omitempty"` + PolicyURI string `json:"policy_uri,omitempty"` + InformationURI string `json:"information_uri,omitempty"` + OrganizationName string `json:"organization_name,omitempty"` + OrganizationURI string `json:"organization_uri,omitempty"` +} + +type federationEntityMetadataWithPtrs struct { + FederationFetchEndpoint *string `json:"federation_fetch_endpoint,omitempty"` + FederationListEndpoint *string `json:"federation_list_endpoint,omitempty"` + FederationResolveEndpoint *string `json:"federation_resolve_endpoint,omitempty"` + FederationTrustMarkStatusEndpoint *string `json:"federation_trust_mark_status_endpoint,omitempty"` + FederationTrustMarkListEndpoint *string `json:"federation_trust_mark_list_endpoint,omitempty"` + FederationTrustMarkEndpoint *string `json:"federation_trust_mark_endpoint,omitempty"` + FederationHistoricalLKeysEndpoint *string `json:"federation_historical_keys_endpoint,omitempty"` + Extra map[string]any `json:"-"` + DisplayName *string `json:"display_name,omitempty"` + Description *string `json:"description,omitempty"` + Keywords []string `json:"keywords,omitempty"` + Contacts []string `json:"contacts,omitempty"` + LogoURI *string `json:"logo_uri,omitempty"` + PolicyURI *string `json:"policy_uri,omitempty"` + InformationURI *string `json:"information_uri,omitempty"` + OrganizationName *string `json:"organization_name,omitempty"` + OrganizationURI *string `json:"organization_uri,omitempty"` +} + +// MarshalJSON implements the json.Marshaler interface +func (m FederationEntityMetadata) MarshalJSON() ([]byte, error) { + type Alias FederationEntityMetadata + explicitFields, err := json.Marshal(Alias(m)) + if err != nil { + return nil, errors.WithStack(err) + } + return extraMarshalHelper(explicitFields, m.Extra) +} + +// MarshalJSON implements the json.Marshaler interface +func (m federationEntityMetadataWithPtrs) MarshalJSON() ([]byte, error) { + type Alias federationEntityMetadataWithPtrs + explicitFields, err := json.Marshal(Alias(m)) + if err != nil { + return nil, errors.WithStack(err) + } + return extraMarshalHelper(explicitFields, m.Extra) +} + +func (m *FederationEntityMetadata) fromPointers(withPtrs federationEntityMetadataWithPtrs) { + + m.wasSet = make(map[string]bool) + + valOrig := reflect.ValueOf(m).Elem() + valWithPtrs := reflect.ValueOf(withPtrs) + typeWithPtrs := valWithPtrs.Type() + + for i := 0; i < typeWithPtrs.NumField(); i++ { + ptrField := valWithPtrs.Field(i) + fieldName := typeWithPtrs.Field(i).Name + + origField := valOrig.FieldByName(fieldName) + if !origField.IsValid() || !origField.CanSet() { + continue + } + + if !ptrField.IsNil() { + m.wasSet[fieldName] = true + } + if ptrField.Kind() == reflect.Ptr && origField.Kind() != reflect.Ptr { + if !ptrField.IsNil() { + origField.Set(ptrField.Elem()) + } + } else { + origField.Set(ptrField) + } + } + for k, _ := range m.Extra { + m.wasSet[k] = true + } +} + +// UnmarshalJSON implements the json.Unmarshaler interface +func (m *FederationEntityMetadata) UnmarshalJSON(data []byte) error { + var withPtrs federationEntityMetadataWithPtrs + if err := json.Unmarshal(data, &withPtrs); err != nil { + return err + } + m.fromPointers(withPtrs) + return nil +} + +// UnmarshalJSON implements the json.Unmarshaler interface +func (m *federationEntityMetadataWithPtrs) UnmarshalJSON(data []byte) error { + type Alias federationEntityMetadataWithPtrs + mm := Alias(*m) + + extra, err := unmarshalWithExtra(data, &mm) + if err != nil { + return errors.WithStack(err) + } + mm.Extra = extra + *m = federationEntityMetadataWithPtrs(mm) + return nil +} + +// UnmarshalMsgpack implements the msgpack.Unmarshaler interface +func (m *federationEntityMetadataWithPtrs) UnmarshalMsgpack(data []byte) error { + type Alias federationEntityMetadataWithPtrs + mm := Alias(*m) + err := msgpack.Unmarshal(data, &mm) + if err != nil { + return errors.WithStack(err) + } + *m = federationEntityMetadataWithPtrs(mm) + return nil +} + +// UnmarshalMsgpack implements the msgpack.Unmarshaler interface +func (m *FederationEntityMetadata) UnmarshalMsgpack(data []byte) error { + var withPtrs federationEntityMetadataWithPtrs + if err := msgpack.Unmarshal(data, &withPtrs); err != nil { + return err + } + m.fromPointers(withPtrs) + return nil +} + +// ApplyPolicy applies a MetadataPolicy to the FederationEntityMetadata +func (m FederationEntityMetadata) ApplyPolicy(policy MetadataPolicy) (any, error) { + return applyPolicy(&m, policy, "federation_entity") +} diff --git a/metadata_input.go b/metadata_input.go index 43e106b..ef95e1a 100644 --- a/metadata_input.go +++ b/metadata_input.go @@ -23,65 +23,86 @@ type commonMetadata struct { } type openIDRelyingPartyMetadata struct { - Scope string `json:"scope,omitempty"` - RedirectURIS []string `json:"redirect_uris,omitempty"` - ResponseTypes []string `json:"response_types,omitempty"` - GrantTypes []string `json:"grant_types,omitempty"` - ApplicationType string `json:"application_type,omitempty"` - Contacts []string `json:"contacts,omitempty"` - ClientName string `json:"client_name,omitempty"` - LogoURI string `json:"logo_uri,omitempty"` - ClientURI string `json:"client_uri,omitempty"` - PolicyURI string `json:"policy_uri,omitempty"` - TOSURI string `json:"tos_uri,omitempty"` - SectorIdentifierURI string `json:"sector_identifier_uri,omitempty"` - SubjectType string `json:"subject_type,omitempty"` - IDTokenSignedResponseAlg string `json:"id_token_signed_response_alg,omitempty"` - IDTokenEncryptedResponseAlg string `json:"id_token_encrypted_response_alg,omitempty"` - IDTokenEncryptedResponseEnc string `json:"id_token_encrypted_response_enc,omitempty"` - UserinfoSignedResponseAlg string `json:"userinfo_signed_response_alg,omitempty"` - UserinfoEncryptedResponseAlg string `json:"userinfo_encrypted_response_alg,omitempty"` - UserinfoEncryptedResponseEnc string `json:"userinfo_encrypted_response_enc,omitempty"` - RequestObjectSigningAlg string `json:"request_object_signing_alg,omitempty"` - RequestObjectEncryptionAlg string `json:"request_object_encryption_alg,omitempty"` - RequestObjectEncryptionEnc string `json:"request_object_encryption_enc,omitempty"` - TokenEndpointAuthMethod string `json:"token_endpoint_auth_method,omitempty"` - TokenEndpointAuthSigningAlg string `json:"token_endpoint_auth_signing_alg,omitempty"` - DefaultMaxAge int64 `json:"default_max_age,omitempty"` - RequireAuthTime bool `json:"require_auth_time,omitempty"` - DefaultACRValues []string `json:"default_acr_values,omitempty"` - InitiateLoginURI string `json:"initiate_login_uri,omitempty"` - RequestURIs []string `json:"request_uris,omitempty"` - SoftwareID string `json:"software_id,omitempty"` - SoftwareVersion string `json:"software_version,omitempty"` - ClientID string `json:"client_id,omitempty"` - ClientSecret string `json:"client_secret,omitempty"` - ClientIDIssuedAt int64 `json:"client_id_issued_at,omitempty"` - ClientSecretExpiresAt int64 `json:"client_secret_expires_at,omitempty"` - RegistrationAccessToken string `json:"registration_access_token,omitempty"` - RegistrationClientURI string `json:"registration_client_uri,omitempty"` - ClaimsRedirectURIs []string `json:"claims_redirect_uris,omitempty"` - NFVTokenSignedResponseAlg string `json:"nfv_token_signed_response_alg,omitempty"` - NFVTokenEncryptedResponseAlg string `json:"nfv_token_encrypted_response_alg,omitempty"` - NFVTokenEncryptedResponseEnc string `json:"nfv_token_encrypted_response_enc,omitempty"` - TLSClientCertificateBoundAccessTokens bool `json:"tls_client_certificate_bound_access_tokens,omitempty"` - TLSClientAuthSubjectDN string `json:"tls_client_auth_subject_dn,omitempty"` - TLSClientAuthSANDNS string `json:"tls_client_auth_san_dns,omitempty"` - TLSClientAuthSANURI string `json:"tls_client_auth_san_uri,omitempty"` - TLSClientAuthSANIP string `json:"tls_client_auth_san_ip,omitempty"` - TLSClientAuthSANEMAIL string `json:"tls_client_auth_san_email,omitempty"` - RequireSignedRequestObject bool `json:"require_signed_request_object,omitempty"` - RequirePushedAuthorizationRequests bool `json:"require_pushed_authorization_requests,omitempty"` - IntrospectionSignedResponseAlg string `json:"introspection_signed_response_alg,omitempty"` - IntrospectionEncryptedResponseAlg string `json:"introspection_encrypted_response_alg,omitempty"` - IntrospectionEncryptedResponseEnc string `json:"introspection_encrypted_response_enc,omitempty"` - FrontchannelLogoutURI string `json:"frontchannel_logout_uri,omitempty"` - FrontchannelLogoutSessionRequired bool `json:"frontchannel_logout_session_required,omitempty"` - BackchannelLogoutURI string `json:"backchannel_logout_uri,omitempty"` - BackchannelLogoutSessionRequired bool `json:"backchannel_logout_session_required,omitempty"` - PostLogoutRedirectURIs []string `json:"post_logout_redirect_uris,omitempty"` - AuthorizationDetailsTypes []string `json:"authorization_details_types,omitempty"` - ClientRegistrationTypes []string `json:"client_registration_types"` + Scope string `json:"scope,omitempty"` + RedirectURIS []string `json:"redirect_uris,omitempty"` + ResponseTypes []string `json:"response_types,omitempty"` + GrantTypes []string `json:"grant_types,omitempty"` + ApplicationType string `json:"application_type,omitempty"` + Contacts []string `json:"contacts,omitempty"` + ClientName string `json:"client_name,omitempty"` + LogoURI string `json:"logo_uri,omitempty"` + ClientURI string `json:"client_uri,omitempty"` + PolicyURI string `json:"policy_uri,omitempty"` + TOSURI string `json:"tos_uri,omitempty"` + SectorIdentifierURI string `json:"sector_identifier_uri,omitempty"` + SubjectType string `json:"subject_type,omitempty"` + SubjectTypesSupported []string `json:"subject_types_supported,omitempty"` + IDTokenSignedResponseAlg string `json:"id_token_signed_response_alg,omitempty"` + IDTokenSigningAlgValuesSupported []string `json:"id_token_signing_alg_values_supported,omitempty"` + IDTokenEncryptedResponseAlg string `json:"id_token_encrypted_response_alg,omitempty"` + IDTokenEncryptionAlgValuesSupported []string `json:"id_token_encryption_alg_values_supported,omitempty"` + IDTokenEncryptedResponseEnc string `json:"id_token_encrypted_response_enc,omitempty"` + IDTokenEncryptionEncValuesSupported []string `json:"id_token_encryption_enc_values_supported,omitempty"` + UserinfoSignedResponseAlg string `json:"userinfo_signed_response_alg,omitempty"` + UserinfoSigningAlgValuesSupported []string `json:"userinfo_signing_alg_values_supported,omitempty"` + UserinfoEncryptedResponseAlg string `json:"userinfo_encrypted_response_alg,omitempty"` + UserinfoEncryptionAlgValuesSupported []string `json:"userinfo_encryption_alg_values_supported,omitempty"` + UserinfoEncryptedResponseEnc string `json:"userinfo_encrypted_response_enc,omitempty"` + UserinfoEncryptionEncValuesSupported []string `json:"userinfo_encryption_enc_values_supported,omitempty"` + RequestObjectSigningAlg string `json:"request_object_signing_alg,omitempty"` + RequestObjectSigningAlgValuesSupported []string `json:"request_object_signing_alg_values_supported,omitempty"` + RequestObjectEncryptionAlg string `json:"request_object_encryption_alg,omitempty"` + RequestObjectEncryptionAlgValuesSupported []string `json:"request_object_encryption_alg_values_supported,omitempty"` + RequestObjectEncryptionEnc string `json:"request_object_encryption_enc,omitempty"` + RequestObjectEncryptionEncValuesSupported []string `json:"request_object_encryption_enc_values_supported,omitempty"` + TokenEndpointAuthMethod string `json:"token_endpoint_auth_method,omitempty"` + TokenEndpointAuthMethodsSupported []string `json:"token_endpoint_auth_methods_supported,omitempty"` + TokenEndpointAuthSigningAlg string `json:"token_endpoint_auth_signing_alg,omitempty"` + TokenEndpointAuthSigningAlgValuesSupported []string `json:"token_endpoint_auth_signing_alg_values_supported,omitempty"` + AuthorizationSignedResponseAlg string `json:"authorization_signed_response_alg,omitempty"` + AuthorizationSigningAlgValuesSupported []string `json:"authorization_signing_alg_values_supported,omitempty"` + AuthorizationEncryptedResponseAlg string `json:"authorization_encrypted_response_alg,omitempty"` + AuthorizationEncryptionAlgValuesSupported []string `json:"authorization_encryption_alg_values_supported,omitempty"` + AuthorizationEncryptedResponseEnc string `json:"authorization_encrypted_response_enc,omitempty"` + AuthorizationEncryptionEncValuesSupported []string `json:"authorization_encryption_enc_values_supported,omitempty"` + DefaultMaxAge int64 `json:"default_max_age,omitempty"` + RequireAuthTime bool `json:"require_auth_time,omitempty"` + DefaultACRValues []string `json:"default_acr_values,omitempty"` + InitiateLoginURI string `json:"initiate_login_uri,omitempty"` + RequestURIs []string `json:"request_uris,omitempty"` + SoftwareID string `json:"software_id,omitempty"` + SoftwareVersion string `json:"software_version,omitempty"` + ClientID string `json:"client_id,omitempty"` + ClientSecret string `json:"client_secret,omitempty"` + ClientIDIssuedAt int64 `json:"client_id_issued_at,omitempty"` + ClientSecretExpiresAt int64 `json:"client_secret_expires_at,omitempty"` + RegistrationAccessToken string `json:"registration_access_token,omitempty"` + RegistrationClientURI string `json:"registration_client_uri,omitempty"` + ClaimsRedirectURIs []string `json:"claims_redirect_uris,omitempty"` + NFVTokenSignedResponseAlg string `json:"nfv_token_signed_response_alg,omitempty"` + NFVTokenEncryptedResponseAlg string `json:"nfv_token_encrypted_response_alg,omitempty"` + NFVTokenEncryptedResponseEnc string `json:"nfv_token_encrypted_response_enc,omitempty"` + TLSClientCertificateBoundAccessTokens bool `json:"tls_client_certificate_bound_access_tokens,omitempty"` + TLSClientAuthSubjectDN string `json:"tls_client_auth_subject_dn,omitempty"` + TLSClientAuthSANDNS string `json:"tls_client_auth_san_dns,omitempty"` + TLSClientAuthSANURI string `json:"tls_client_auth_san_uri,omitempty"` + TLSClientAuthSANIP string `json:"tls_client_auth_san_ip,omitempty"` + TLSClientAuthSANEMAIL string `json:"tls_client_auth_san_email,omitempty"` + RequireSignedRequestObject bool `json:"require_signed_request_object,omitempty"` + RequirePushedAuthorizationRequests bool `json:"require_pushed_authorization_requests,omitempty"` + IntrospectionSignedResponseAlg string `json:"introspection_signed_response_alg,omitempty"` + IntrospectionSigningAlgValuesSupported []string `json:"introspection_signing_alg_values_supported,omitempty"` + IntrospectionEncryptedResponseAlg string `json:"introspection_encrypted_response_alg,omitempty"` + IntrospectionEncryptionAlgValuesSupported []string `json:"introspection_encryption_alg_values_supported,omitempty"` + IntrospectionEncryptedResponseEnc string `json:"introspection_encrypted_response_enc,omitempty"` + IntrospectionEncryptionEncValuesSupported []string `json:"introspection_encryption_enc_values_supported,omitempty"` + FrontchannelLogoutURI string `json:"frontchannel_logout_uri,omitempty"` + FrontchannelLogoutSessionRequired bool `json:"frontchannel_logout_session_required,omitempty"` + BackchannelLogoutURI string `json:"backchannel_logout_uri,omitempty"` + BackchannelLogoutSessionRequired bool `json:"backchannel_logout_session_required,omitempty"` + PostLogoutRedirectURIs []string `json:"post_logout_redirect_uris,omitempty"` + AuthorizationDetailsTypes []string `json:"authorization_details_types,omitempty"` + ClientRegistrationTypes []string `json:"client_registration_types"` Extra map[string]any `json:"-"` }