Vue d'ensemble
Accéder plus tard à des informations dont le credential n'était pas encore validé.
Le partage différé permet à un utilisateur de partager des informations issues de credentials pas encore validés. Vous les récupérez ensuite, de façon asynchrone, quand ils le sont.
Principe
- Le consentement suit le flux
authorization_codehabituel, avec le scopeprivate:delayed_sharing. - L’utilisateur peut sélectionner des credentials encore en attente de validation.
- Un nouveau claim,
private:delayed_sharing, contient l’URL de l’API de partage différé. - Cette API reste accessible après l’expiration du code et des jetons, pendant une durée fixée par un TTL. Elle réexpose les informations consenties ; les claims des credentials désormais validés apparaissent.
- Elle s’appelle avec un jeton obtenu par le flux
client_credentials, avec les mêmes identifiants que le fluxauthorization_code. - Si tous les credentials sont déjà validés, l’API retourne simplement les mêmes informations que la transaction initiale.
Limites
Même avec ce scope, vous pouvez ne jamais recevoir toutes les informations :
- l’utilisateur n’a aucun credential à partager (validé ou en attente) ;
- la validation d’un credential a échoué ;
- l’utilisateur supprime un credential (avant ou après validation) ou révoque son consentement ;
- le TTL du partage est expiré.
La réponse OIDC initiale n’explique pas pourquoi un claim manque ; l’API de partage différé indique si un claim correspond à un credential en attente.
Stratégie d’implémentation
- Collectez et stockez tous les claims disponibles dès le consentement : ne comptez pas sur une relecture ultérieure.
- Si un claim attendu manque, appelez tout de suite l’API de partage différé pour savoir s’il peut arriver.
- Réagissez ensuite aux webhooks pour réinterroger l’API.
- Collectez les claims dès qu’ils apparaissent : ils peuvent disparaître ensuite.
- Prévoyez des règles métier pour le cas où le claim n’arrive jamais.
Configuration côté A3BC
Réalisée par A3BC dans le back-office, sur votre demande :
- ajout du scope
private:delayed_sharingaux scopes autorisés ; - ajout de
client_credentials(et éventuellementrefresh_token) aux grants,authorization_coderestant sélectionné ; - réglage de
delayed_sharing_ttl, la durée du partage en secondes.
Exemple de consentement
Avec les scopes profile private:ssn.fr private:delayed_sharing, un utilisateur qui consent avec une pièce d’identité validée et un numéro de sécurité sociale encore en attente obtient :
{
"birthdate": "1978-03-12",
"family_name": "DOE",
"gender": "male",
"given_name": "JOHN",
"private:delayed_sharing": "http://openui.a3bc.lan/delayed-sharing/dddb6b7c-2730-4f52-bc5b-76c5e7faf549",
"private:ssn": "",
"private:ssn_key": "",
"private:ssn_verified": "",
"sub": "f997cfff165741f98038628f103fedb3"
}
Les claims private:ssn* sont présents mais vides : c’est la réponse standard quand aucune valeur n’est disponible. Le claim private:delayed_sharing donne l’URL à interroger.