A prescindere da qualsiasi altro contenuto o errore: l’istanza deve essere raggiungibile dal portale, che all’atto della registrazione tenta di accedere al tuo file /.well-known/openid-federation per validarlo.
Ciao, abbiamo federato un RP CIE OIDC e verificato il formato sul portale.
Cosa incollare in “Chiave pubblica di federazione”
Non va incollata tutta l’Entity Configuration, ma un JWKS con la sola chiave di federazione (il jwks di primo livello, quello che firma l’Entity Configuration, non openid_relying_party.jwks). Il testo va in chiaro, JSON puro, senza base64 e non come JWT, e con la sola parte pubblica:
alg e use non servono. Il kid deve coincidere con quello nell’header del JWT servito su n. Probabilmente [sub] Elemento mancante compare quando il validatore non riconosce la
{
“kty”: “RSA”,
“kid”: “…”,
“e”: “AQAB”,
“n”: “…”
}
]
}
alg e use non servono. Il kid deve coincidere con quello nell’header del JWT servito su /.well-known/openid-federation. Probabilmente [sub] Elemento mancante compare quando il validatore non riconosce la struttura, per esempio se si incolla l’intero documento o una chiave singola senza l’array keys.
Altri punti da controllare
Cifratura: il portale accetta RSA-OAEP + A256CBC-HS512. A noi RSA-OAEP-256 è stato rifiutato.
contacts: in federation_entity non può essere vuoto e deve contenere la PEC dell’ente/impresa
authority_hints: deve essere il Trust Anchor dell’ambiente scelto, non l’OP. Conviene verificare l’URL di preproduzione nella documentazione del portale.
Entity ID: deve coincidere esattamente con iss/sub. L’URL <entity_id>/.well-known/openid-federation deve essere raggiungibile pubblicamente in HTTPS e restituire il JWT firmato (application/entity-statement+jwt).
Premessa:
ho incontrato tre grossi problemi riguardanti tutta la gestione del progetto da parte del team di sviluppo:
l’assistenza ufficiale CIE contattata attraverso cie.enti@interno.it non mi è stata di aiuto, ho sempre ricevuto risposte frettolose, parziali, poco chiare e assolutamente non risolutive.
la pagina di onboarding gestisce in maniera terribile gli errori riguardanti l’inserimento dei dati, in particolare nell’inserimento della Chiave pubblica di federazione: vengono restituiti pochi errori generici che non aiutano assolutamente a capire cosa non va nelle stringhe inserite (i fantomatici “[sub] Elemento mancante” e “L’entità non rispetta i requisiti di federazione”).
In pratica dà errore [sub] Elemento mancante sia se la Chiave pubblica di federazione non è corretta, sia se l’EC servito alla pagina .well-known/openid-federation non è accessibile o non è corretto, anche se in realtà l’elemento sub è presente.
La documentazione sull’onboarding è inesistente:
per l’inserimento della Chiave pubblica di federazione, non è chiaro cosa vada inserito e non c’è un semplice esempio ufficiale, o se c’è non è facile da trovare, visto che nessuno me lo ha indicato: sarebbe molto semplice metterne un template nel pulsante informativo a fianco del campo da compilare
non viene detto da nessuna parte che durante l’onboarding l’EC deve essere accessibile su indirizzo pubblico https non in chiaro (ci si può arrivare, ma scriverlo esplicitamente cosa costa?)
non vengono indicati tool di validazione che in realtà esistono
Mi spiace farlo presente qui ma se qualche responsabile del progetto legge questo post deve essere a conoscenza di queste problematiche che rallentano enormente lo sviluppo dei progetti.
Vi riassumo come ho risolto le varie problematiche.
OnBoarding
Identificativo componente:
deve essere un indirizzo pubblico in HTTPS , accessibile durante il processo di onboarding;
deve servire l’Entity Configuration con questi requistiti al path */.well-known/openid-federation
è un jwt firmato con la chiave privata di federazione
il Content-Type deve essere application/entity-statement+jwt
Il corpo è un’unica stringa nel formato header.payload.firma, con le tre parti in base64url.
ecco un esempio in chiaro (non so se sono proprio tutti i campi obbligatori, ma così è valido)