3.1. OpenID Provider (OP) Metadata¶
Il formato del metadata deriva da quanto specificato nel documento «OpenID Connect Discovery 1.0», del quale costituisce un sottoinsieme con alcuni campi in aggiunta.
Esempio:
{
"issuer": "https://op.fornitore_identita.it",
"authorization_endpoint": "https://op.fornitore_identita.it/auth",
"token_endpoint": "https://op.fornitore_identita.it/token",
"userinfo_endpoint": "https://op.fornitore_identita.it/userinfo",
"introspection_endpoint": "https://op.fornitore_identita.it/introspect",
"revocation_endpoint": "https://op.fornitore_identita.it/revoke",
"end_session_endpoint": "https://op.fornitore_identita.it/logout",
"jwks_uri": "https://registry.spid.gov.it/...",
"id_token_encryption_alg_values_supported": [
"..."
],
"userinfo_signing_alg_values_supported": [
"..."
],
"request_object_encryption_enc_values_supported": [
"..."
],
"token_endpoint_auth_methods_supported": ["private_key_jwt"],
"userinfo_encryption_alg_values_supported": [
"..."
],
"id_token_encryption_enc_values_supported": [
"..."
],
"id_token_signing_alg_values_supported": [
"..."
],
"request_object_encryption_alg_values_supported": [
"..."
],
"token_endpoint_auth_signing_alg_values_supported": [
"..."
],
"request_object_signing_alg_values_supported": [
"..."
],
"userinfo_encryption_enc_values_supported": [
"..."
],
"claims_supported":[
"https://attributes.spid.gov.it/spidCode",
"https://attributes.spid.gov.it/name",
"https://attributes.spid.gov.it/familyName",
"https://attributes.spid.gov.it/placeOfBirth",
"https://attributes.spid.gov.it/countyOfBirth",
"https://attributes.spid.gov.it/dateOfBirth",
"https://attributes.spid.gov.it/gender",
"https://attributes.spid.gov.it/companyName",
"https://attributes.spid.gov.it/registeredOffice",
"https://attributes.spid.gov.it/fiscalNumber",
"https://attributes.spid.gov.it/ivaCode",
"https://attributes.spid.gov.it/idCard",
"https://attributes.spid.gov.it/mobilePhone",
"https://attributes.spid.gov.it/email",
"https://attributes.spid.gov.it/address",
"https://attributes.spid.gov.it/expirationDate",
"https://attributes.spid.gov.it/digitalAddress"
],
"acr_values_supported":[
"https://www.spid.gov.it/SpidL1",
"https://www.spid.gov.it/SpidL2",
"https://www.spid.gov.it/SpidL3
],
"request_parameter_supported": true,
"subject_types_supported":["public"],
"op_name": "Agenzia per l'Italia Digitale",
"op_name#en": "Agency for Digital Italy",
"op_url": "https://www.agid.gov.it",
"op_url#en": "https://www.agid.gov.it/en"
}
Esempio di risorsa jwks_uri:
{
"keys": [
{
"kty": "EC",
"kid": "sig-ec256-0",
"use": "sig",
"crv": "P-256",
"x": "2jM2df3IjB9VYQ0yz373-6EEot_1TBuTRaRYafMi5K0",
"y": "h6Zlz6XReK0L-iu4ZgxlozJEXgTGUFuuDl7o8b_8JnM"
},
{
"kty": "EC",
"kid": "enc-ec256-0",
"use": "enc",
"crv": "P-256",
"x": "QI31cvWP4GwnWIi-Z0IYHauQ4nPCk8Vf1BHoPazGqEc",
"y": "DBwf8t9-abpXGtTDlZ8njjxAb33kOMrOqiGsd9oRxr0"
}
]
}
Elemento | Descrizione |
Issuer | L’identificatore dell’OP (con schema HTTPS), tipicamente l’URL base. Deve essere identico al valore di iss negli ID Token prodotti dall’OP. L’issuer corrisponde al entityID che viene utilizzato in SAML e che rappresenta la chiave univoca con cui è identificato il fornitore di identità. |
authorization_endpoint | URL dell’Authorization Endpoint, al quale il Client viene reindirizzato per iniziare il flusso di autenticazione. |
token_endpoint | URL del Token Endpoin, che il RP deve chiamare per scambiare il codice ricevuto al termine dell’autenticazione con un access_token. |
userinfo_endpoint | URL dello UserInfo Endpoint, che il RP può chiamare per ottenere i claim autorizzati dall’utente. |
introspection_endpoint | URL dell’Introspection Endpoint (v. più avanti) che restituisce informazioni su un token. |
revocation_endpoint | URL del Revocation Endpoint (v. più avanti) che revoca un refresh token o un access token già rilasciato al RP chiamante. |
jwks_uri | Url del registry dove è localizzato il jwks che è un json array composto dai seguenti parametri:
|
provider_name | Nome dell’OpenID Provider. Può essere specificato in più lingue apponendo al nome dell’elemento il suffisso «#» seguito dal codice RFC5646. Un nome di default senza indicazione della lingua è sempre presente. |
provider_url | URL dell’OpenID Provider. Può essere specificato in più lingue apponendo al nome dell’elemento il suffisso «#» seguito dal codice RFC5646. Un valore di default senza indicazione della lingua è sempre presente. |
request_object_signing_alg_valu es_supported | Array contenente gli algoritmi di firma supportati per il JWS dei Request Object. L’OP deve supportare RS256 e può supportare anche altri algoritmi definiti in rfc7518 (3.1): https://tools.ietf.org/html/rfc7518#section-3.1 |
request_object_encryption_alg_v alues_supported | Array contenente gli algoritmi di cifratura (alg) supportati per il JWS dei Request Object, come definito in rfc7518 (4.1): https://tools.ietf.org/html/rfc7518#section-4.1 |
request_object_encryption_enc_v alues_supported | Array contenente gli algoritmi di cifratura (enc) supportati per il JWS dei Request Object, come definito in rfc7518 (5.1): https://tools.ietf.org/html/rfc7518#section-5.1 |
id_token_signing_alg_values_sup ported | Array contenente gli algoritmi di firma supportati per il JWS dell’ID Token. L’OP deve supportare RS256 e può supportare anche altri algoritmi definiti in rfc7518 (3.1): https://tools.ietf.org/html/rfc7518#section-3.1 |
id_token_encryption_alg_values_ supported | Array contenente gli algoritmi di cifratura (alg) supportati per il JWS dell’ID Token, come definito in rfc7518 (4.1): https://tools.ietf.org/html/rfc7518#section-4.1 |
id_token_encryption_enc_values_ supported | Array contenente gli algoritmi di cifratura (enc) supportati per il JWS dell’ID Token, come definito in rfc7518 (5.1): https://tools.ietf.org/html/rfc7518#section-5.1 |
userinfo_signing_alg_values_sup ported | Array contenente gli algoritmi di firma supportati per il JWS dell’UserInfo Endpoint. L’OP deve supportare RS256 e può supportare anche altri algoritmi definiti in rfc7518 (3.1): https://tools.ietf.org/html/rfc7518#section-3.1 |
userinfo_encryption_alg_values_ supported | Array contenente gli algoritmi di cifratura (alg) supportati per il JWE dell’UserInfo Endpoint, come definito in rfc7518 (4.1): https://tools.ietf.org/html/rfc7518#section-4.1 |
userinfo_encryption_enc_values_ supported | Array contenente gli algoritmi di cifratura (enc) supportati per il JWE dell’UserInfo Endpoint, come definito in rfc7518 (5.1): https://tools.ietf.org/html/rfc7518#section-5.1 |
token_endpoint_auth_methods_sup ported | Array contenente i metodi di autenticazione supportati dal Token Endpoint. Deve essere presente solo il valore private_key_jwt |
acr_values_supported | Array contenente i livelli SPID supportati dall’OP, rappresentati come URI. Può contenere uno o più valori tra i seguenti: |
request_parameter_supported | Valore booleano che indica se il parametro request è supportato dall’OP. Deve essere obbligatoriamente true. |
subject_types_supported | Array contenente i tipi di Subject Identifier supportati dall’OP. Deve contenere il solo valore public. |
Riferimenti
https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata |