### GET https://PROCONNECT_DOMAIN/api/v2/userinfo Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/implementation_technique Endpoint permettant de récupérer les informations de l'utilisateur authentifié. Implémente le UserInfo Endpoint de OpenID Connect. ```APIDOC ## GET https://PROCONNECT_DOMAIN/api/v2/userinfo ### Description Implémente le UserInfo Endpoint de OpenID Connect. Permet de récupérer les informations de l'utilisateur authentifié en utilisant l'access token. ### Method GET ### Endpoint https://PROCONNECT_DOMAIN/api/v2/userinfo ### Parameters #### Headers - **Authorization** (string) - Requis - `Bearer ` où `` a été communiqué par le Token Endpoint ### Response #### Success Response (200) - **content-type** (string) - `application/jwt` ou `application/json` selon la configuration - **description** (string) - JSON Web Token signé ou JSON contenant les claims transmis par le FI #### Error Response (400) - **content-type** (string) - `application/json;charset=utf-8` - **description** (string) - JSON document décrivant l'origine de l'erreur de format ``` -------------------------------- ### Appel du Logout Endpoint avec id_token_hint Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/implementation_technique Appel HTTP GET à /api/v2/session/end avec les paramètres id_token_hint, state et post_logout_redirect_uri. Doit être réalisé via une redirection navigateur pour expirer les cookies de session. ```http GET /api/v2/session/end?id_token_hint=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI3MDRlMDI0MjI5MDE1ZDJiZDQ3ZjdhNWU1YWIwNWIzNWM4MzM2YWI0MDNjMzgwMjI5ODVmOGNmYWRjODZmZTkxIiwiYW1yIjpbInB3ZCJdLCJhdXRoX3RpbWUiOjE2Njg1MzAzMjYsImFjciI6ImVpZGFzMSIsIm5vbmNlIjoiYWZjODFmZGExZmJiNmQzYzg3NmFmNzVjNzM3YTEzMDdhMWIyOWJhMDg3M2VmYTA1OWU0NTM1ZDEyMmM5ZGI1YSIsImF0X2hhc2giOiJJVEJTV1J2NW1HRmxxTGQ0Sm5nbnRnIiwidWIiOiI2OTI1ZmI4MTQzYzc2ZWQzZDQ0ZDU4ODM3ZDIwMGM2Y2IxMDA2MDY1ZjdmMDAzZDU1MjcxMmI3ODk4NTcwNGYzOTU0MCIsImV4cCI6MTY2ODUzMDM4NiwiaWF0IjoxNjY4NTMwMzI2LCJpc3MiOiJodHRwczovL2ZjYS5pbnRlZzAxLmRldi1hZ2VudGNvbm5lY3QuZnIvYXBpL3YyIiwibm9uY2UiOiJhZmM1OGYxYmJiNmQzZF7hZmE3NTczNzM3M1OGQ0NjVmM2RkMTcwODJiZjlkYzRlMjQ0NmIzNDM4NTM1NmQ1OCJ0.hg1n4WJbzZECwz4VldAybXYreEXJ4fxpSWqDseV4tTk&state=3b7bd7fB38ccab89864563f17a89c4cb3bd400164ce828b4cfc2cb01ce8ed9da&post_logout_redirect_uri=https%3A%2F%2Ffsa1v2.integ01.dev-agentconnect.fr%2Flogout-callback HTTP/1.1 Host: fca.integ01.dev-agentconnect.fr ``` -------------------------------- ### GET FS_URL/POST_LOGOUT_REDIRECT_URI?state=x Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/implementation_technique Route de redirection vers le FS après déconnexion. ProConnect renvoie le state communiqué par le FS lors de la demande de déconnexion. ```APIDOC ## [GET] FS_URL/POST_LOGOUT_REDIRECT_URI?state=x ### Description Redirection vers le FS après déconnexion. ProConnect renvoie le state communiqué par le FS lors de la demande de déconnexion. ### Method GET ### Endpoint FS_URL/POST_LOGOUT_REDIRECT_URI?state=x ### Parameters #### Query Parameters - **state** (string, minimum 32 caractères) - Requis - `` communiqué par le FS dans l'appel au Logout Endpoint. Cette information est à vérifier par le FS, afin d'empêcher l'exploitation de failles CSRF ### Request Example ``` GET /logout-callback?state=3b7bd7fb38ccab89864563f17a89c4cb3bd400164ce828b4cfc2cb01ce8ed9da HTTP/1.1 Host: fsa1v2.integ01.dev-agentconnect.fr ``` ### Response (No explicit response example provided in source) ``` -------------------------------- ### GET /api/v2/session/end Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/implementation_technique Endpoint de déconnexion auprès de ProConnect. Implémente le Logout Endpoint de OpenID Connect. Cet appel doit être réalisé via une redirection dans le navigateur de l'agent, afin d'expirer les cookies de session ProConnect et FI. ```APIDOC ## [GET] /api/v2/session/end ### Description Implémente le Logout Endpoint de OpenID Connect. Cet appel doit être réalisé via une redirection dans le navigateur de l'agent, afin d'expirer les cookies de session ProConnect et FI. ### Method GET ### Endpoint /api/v2/session/end ### Parameters #### Query Parameters - **id_token_hint** (string) - Recommandé - `` contenu dans la réponse du Token Endpoint - **state** (string) - Requis - Champ obligatoire, généré aléatoirement par le FS, que ProConnect renvoie tel quel dans la redirection qui suit la déconnexion, pour être ensuite vérifié par le FS. Il est utilisé afin d'empêcher l'exploitation de failles CSRF - **post_logout_redirect_uri** (string) - Requis - URL de retour vers le FS, communiquée dans le formulaire Démarches Simplifiées. Attention, cette URL doit être encodée pour être passée en query parameter, doit correspondre exactement à celle communiquée à ProConnect, et est sensible à la présence ou non du `/` final - **client_id** (string) - Optionnel - Identifiant du FS, utilisé lorsque l'id_token_hint ne peut être fourni en raison de contraintes techniques. ### Request Example ``` GET /api/v2/session/end?id_token_hint=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI3MDRlMDI0MjI5MDE1ZDJiZDQ3ZjdhNWU1YWIwNWIzNWM4MzM2YWI0MDNjMzgwMjI5ODVmOGNmYWRjODZmZTkxIiwiYW1yIjpbInB3ZCJdLCJhdXRoX3RpbWUiOjE2Njg1MzAzMjYsImFjciI6ImVpZGFzMSIsIm5vbmNlIjoiYWZjODFmZGExZmJiNmQzYzg3NmFmNzVjNzM3YTEzMDdhMWIyOWJhMDg3M2VmYTA1OWU0NTM1ZDEyMmM5ZGI1YSIsImF0X2hhc2giOiJJVEJTV1J2NW1HRmxxTGQ0Sm5nbnRnIiwiYXVkIjoiNjkyNWZiODE0M2M3NmVkZWQ0NGQzMmI0MGMwY2IxMDA2MDY1ZjdmMDAzZGU1MjcxMmI3ODk4NTcwNGYzOTk1MCIsImV4cCI6MTY2ODUzMDM4NiwiaWF0IjoxNjY4NTMwMzI2LCJpc3MiOiJodHRwczovL2ZjYS5pbnRlZzAxLmRldi1hZ2VudGNvbm5lY3QuZnIvYXBpL3YyIn0.hg1n4WJbzZECwz4VldAybXYreEXJ4fxpSWqDs9V4tTk&state=3b7bd7fb38ccab89864563f17a89c4cb3bd400164ce828b4cfc2cb01ce8ed9da&post_logout_redirect_uri=https%3A%2F%2Ffsa1v2.integ01.dev-agentconnect.fr%2Flogout-callback HTTP/1.1 Host: fca.integ01.dev-agentconnect.fr ``` ### Response #### Success Response (303) - **content-type** (string) - `text/html;charset=UTF-8` - **description** (string) - Redirection vers le FI pour déconnexion, puis redirection vers le FS après déconnexion #### Response Example (No explicit response example provided in source) ``` -------------------------------- ### Exemple d'URL avec le paramètre login_hint Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/login_hint_usage Utilisez cette URL pour appeler l'authorization_endpoint avec le paramètre login_hint afin de préremplir l'adresse email de l'utilisateur dans la mire de connexion ProConnect. Remplacez les valeurs entre chevrons par vos propres paramètres. Le paramètre login_hint est optionnel et l'utilisateur peut toujours modifier l'adresse préremplie. ```text https://PROCONNECT_DOMAIN/api/v2/authorize?response_type=code&client_id=&redirect_uri=&scope=&state=&nonce=&login_hint=utilisateur@exemple.fr ``` -------------------------------- ### Règle CSS pour le bouton ProConnect (CSS) Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/bouton_proconnect Ajuste la mise en page du bouton pour ProConnect, en remplaçant l'icône par défaut par celle de ProConnect et en définissant le dimensionnement. À ajouter après les modifications mentionnées dans les étapes DSFR. ```css .fr-connect { padding-left: 4.375em !important; } .fr-connect:before { width: 3.375em !important; background-size: 3.375em 3em !important; left: 0.625em !important; } ``` -------------------------------- ### Algorithmes de signature asymétrique supportés par ProConnect Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-identite/configuration Liste des algorithmes de signature asymétrique que ProConnect gère pour signer les appels aux endpoints /token et /user-info. Ces algorithmes sont ES256 (EC + SHA256) et RS256 (RSA + SHA256). ```text - ES256 (EC + SHA256) - RS256 (RSA + SHA256) ``` -------------------------------- ### Réponse userinfo_endpoint de ProConnect avec objet custom rempli Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/custom-scope Cas n°2 : ProConnect place les propriétés non canoniques dans l'objet `custom`. ```json { "sub": "7396c91e-b9f2-4f9d-8547-5e9b3332725b", ... "custom": { "structureTravail": "59194", "siteTravail": "DRHAUTS-DE-FRANCE/PFPPLATEFORMESERVICESADISTANCE(HDF0262005733)" } } ``` -------------------------------- ### Intégration HTML/CSS du bouton ProConnect (sans Design Système) Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/bouton_proconnect À utiliser lorsque le Système de Design de l'État n'est pas employé. Fournit une classe pour l'accessibilité (masquer le texte) et une classe .proconnect-button pour le style de base. ```css .proconnect-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0; } .proconnect-button { background-color: transparent !important; background-image: ``` -------------------------------- ### CSS du bouton ProConnect Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/bouton_proconnect Styles CSS pour le bouton ProConnect, avec une image de fond en base64 et un état de survol. À utiliser lorsque le site n'utilise pas le Système de Design de l'État. ```css .proconnect-button { background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMTQiIGhlaWdodD0iNTYiIHZpZXdCb3g9IjAgMCAyMTQgNTYiPjxwYXRoIGZpbGw9IiMwMDAwOTkiIGQ9Ik0wIDBoMjE0djU2SDB6Ii8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEwLjUgMTIuNWgxOTN2MzFIMTAuNXoiLz48cGF0aCBmaWxsPSIjMDAwMDk5IiBkPSJNMjAgMjBoMTc0djE2SDIweiIvPjx0ZXh0IHg9IjEwNyIgeT0iMzAiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgZmlsbD0iI2ZmZiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+UHJvQ29ubmVjdDwvdGV4dD48L3N2Zz4='); background-position: 50% 50%; background-repeat: no-repeat; width: 214px; height: 56px; border: none; } .proconnect-button:hover { background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMTQiIGhlaWdodD0iNTYiIHZpZXdCb3g9IjAgMCAyMTQgNTYiPjxwYXRoIGZpbGw9IiMwMDAwOTkiIGQ9Ik0wIDBoMjE0djU2SDB6Ii8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEwLjUgMTIuNWgxOTN2MzFIMTAuNXoiLz48cGF0aCBmaWxsPSIjMDAwMDk5IiBkPSJNMjAgMjBoMTc0djE2SDIweiIvPjx0ZXh0IHg9IjEwNyIgeT0iMzAiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgZmlsbD0iI2ZmZiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+UHJvQ29ubmVjdDwvdGV4dD48L3N2Zz4='); } ``` -------------------------------- ### Réponse userinfo_endpoint avec objet custom vide Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/custom-scope Cas n°1 : le Fournisseur d'Identité n'a retourné aucune propriété non canonique. ProConnect renvoie un objet `custom` vide. ```json { "sub": "sub-proconnect", ... "custom": {} } ``` -------------------------------- ### Bouton ProConnect avec dsfr-view-components (Ruby/Rails) Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/bouton_proconnect Pour les applications Ruby/Rails utilisant le Système de Design de l'État, la librairie dsfr-view-components fournit le helper. La cible du lien est passée via l'option target. ```erb <%= dsfr_proconnect_button(target: "#") %> ``` -------------------------------- ### Schéma du flux d'authentification multi-facteur (attente conformité) Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/double_authentification Schéma ASCII montrant le flux d'authentification lorsque ProConnect relaie avec un OTP Mail pour les fournisseurs d'identité non compatibles MFA, avec les valeurs ACR résultantes. ```text FS │ │ claims acr MFA ▼ ProConnect │ FI compatible MFA ? ┌──────┴───────────┐ OUI NON │ │ │ demande MFA │ demande connexion std ▼ ▼ FI FI │ │ │ retour MFA │ retour connexion ▼ ▼ ProConnect ProConnect │ │ │ │ OTP mail │ ▼ │ validation OTP │ │ ▼ ▼ FS FS acr: selon MFA acr: eidas1-mfa du FI (eidas1-mfa → eidas3) ``` -------------------------------- ### Réponse userinfo_endpoint de ProConnect sans scope custom Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/custom-scope NB : Si le Fournisseur de Service ne demande pas le scope `custom`, l'objet `custom` n'est pas retourné, même si le Fournisseur d'Identité renvoie des propriétés non canoniques. ```json { "sub": "7396c91e-b9f2-4f9d-8547-5e9b3332725b", ... } ``` -------------------------------- ### Retour vers le FS - post_logout_redirect_uri - Exemple Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/implementation_technique Appel de retour vers le FS de test après déconnexion, avec le paramètre state. Ce retour est utilisé pour vérifier le state et prévenir les attaques CSRF. ```http GET /logout-callback?state=3b7bd7fb38ccab89864563f17a89c4cb3bd400164ce828b4cfc2cb01ce8ed9da HTTP/1.1 Host: fsa1v2.integ01.dev-agentconnect.fr ``` -------------------------------- ### Exemple de contenu JSON de l'objet USERINFO Source: https://partenaires.proconnect.gouv.fr/docs/ressources/glossaire Exemple de l'objet JSON contenu dans le JWT retourné par l'appel à AC_URL/api/v2/userinfo. Le JSON doit contenir les six clés obligatoires : aud, exp, iat, iss, sub. Les champs aud, exp, iat, iss, sub sont obligatoires selon la norme OpenID Connect. ```json { "sub": "704e024229015d2bd47f7a5e5ab05b35c8336ab403c38022985f8cfadc86fe91", "uid": "1", "given_name": "Angela Claire Louise", "usual_name": "DUBOIS", "email": "test@abcd.com", "siren": "343293775", "siret": "34329377500037", "organizational_unit": "comptabilite", "belonging_population": "agent", "phone_number": "+331-12-44-45-23", "chorusdt:matricule": "USER_AGC", "chorusdt:societe": "CHT", "idp_id": "fia1v2", "idp_acr": "eidas1", "aud": "6925fb8143c76eded44d32b40c0cb1006065f7f003de52712b78985704f39950", "exp": 1668779720, "iat": 1668779660, "iss": "https://fca.integ01.dev-agentconnect.fr/api/v2" } ``` -------------------------------- ### Algorithme de signature symétrique supporté par ProConnect Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-identite/configuration Algorithme de signature symétrique géré par ProConnect, mais non recommandé : HS256 (HMAC + SHA256). ```text - HS256 (HMAC + SHA256) ``` -------------------------------- ### POST https://PROCONNECT_DOMAIN/api/v2/token Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/implementation_technique Endpoint permettant d'obtenir un access token et un id_token en échange d'un code d'autorisation. Implémente le Token Endpoint de OpenID Connect. ```APIDOC ## POST https://PROCONNECT_DOMAIN/api/v2/token ### Description Implémente le Token Endpoint de OpenID Connect. Permet d'échanger le code d'autorisation contre un access token et un id_token. ### Method POST ### Endpoint https://PROCONNECT_DOMAIN/api/v2/token ### Parameters #### Headers - **Content-Type** (string) - Requis - `application/x-www-form-urlencoded` #### Request Body - **grant_type** (string) - Requis - `authorization_code` - **client_id** (string) - Requis - Identifiant du FS, communiqué lors de son inscription auprès de ProConnect - **client_secret** (string) - Requis - Le secret du FS, communiqué lors de son inscription auprès de ProConnect - **redirect_uri** (string) - Requis - Url de retour vers le FS (encodée), communiqué lors de l'appel au Authorization Endpoint - **code** (string) - Requis - Code d'autorisation fourni par ProConnect après connexion ### Response #### Success Response (200) - **access_token** (string) - L'access token - **token_type** (string) - Bearer - **expires_in** (number) - Durée de validité en secondes (60) - **id_token** (string) - L'id_token #### Response Example { "access_token": "", "token_type": "Bearer", "expires_in": 60, "id_token": "" } #### Error Response (400) - **content-type** (string) - `application/json;charset=utf-8` - **description** (string) - JSON document décrivant l'origine de l'erreur de format ``` -------------------------------- ### Réponse userinfo_endpoint du Fournisseur d'Identité avec propriétés non canoniques Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/custom-scope Cas n°2 : le Fournisseur d'Identité a retourné des propriétés non canoniques, ici `structureTravail` et `siteTravail`. ```json { "sub": "sub-idp", ..., "structureTravail": "59194", "siteTravail": "DRHAUTS-DE-FRANCE/PFPPLATEFORMESERVICESADISTANCE(HDF0262005733)" } ``` -------------------------------- ### Exiger un niveau ACR dans la requête /authorize Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/niveaux-acr Incluez ce paramètre dans la requête /authorize pour exiger un ou plusieurs niveaux ACR. L'exemple exige le niveau de confiance 'https://proconnect.gouv.fr/assurance/consistency-checked-2fa'. ```json claims={ "id_token": { "acr": { "essential": true, "values": [ "https://proconnect.gouv.fr/assurance/consistency-checked-2fa" ] } } } ``` -------------------------------- ### Configuration côté client : claims ACR pour forcer la 2FA Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/double_authentification Exemple de JSON à envoyer dans le paramètre claims lors de l'appel à l'authorization_endpoint. Le champ claims doit être URI-encoded dans l'URL. ```json { "claims": { "id_token": { "acr": { "essential": true, "values": ["eidas0-mfa", "eidas1-mfa", "eidas2", "eidas3"] } } } } ``` -------------------------------- ### ID token avec acr pour certification dirigeant Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/certification-dirigeant Exemple d'ID token renvoyé par ProConnect lorsque la demande inclut le paramètre acr requis. Il est impératif de vérifier la présence et la valeur du paramètre acr côté serveur avant d'accorder l'accès aux fonctionnalités réservées aux dirigeants. Ne jamais se fier uniquement à la présence d'autres attributs dans l'ID token. ```json { "iss": "https://proconnect.gouv.fr", "aud": "VOTRE_CLIENT_ID", "exp": 1700000000, "iat": 1699999400, "sub": "248289761001", "acr": "https://proconnect.gouv.fr/assurance/certification-dirigeant" } ``` -------------------------------- ### Bouton ProConnect avec react-dsfr Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/bouton_proconnect À utiliser dans une application React utilisant le Système de Design de l'État. La librairie react-dsfr fournit le composant ProConnectButton. L'URL de destination est passée via la propriété url. ```jsx ``` -------------------------------- ### Schéma de fonctionnement ProConnect Source: https://partenaires.proconnect.gouv.fr/docs Représentation visuelle du flux d'authentification entre le Fournisseur de Service, ProConnect et le Fournisseur d'Identité. ```text ┌────────────────────────┐ │ Fournisseur de │ │ Service │ └──────────┬─────────────┘ │ 1. Clic sur ProConnect ▼ ┌────────────────────────┐ │ ProConnect │ │ saisie de l'email │ └──────────┬─────────────┘ │ 2. Redirection FI ┌────────┴─────────────┐ domaine email domaine email avec un FI sans FI connu │ │ ▼ ▼ ┌───────────────────┐ ┌─────────────────────────┐ │ Fournisseur │ │ ProConnect Identité : │ │ d'Identité (FI) : │ │ création de compte │ │ connexion avec │ │ email / mot de passe │ │ le compte pro │ │ │ └─────────┬─────────┘ └────────────┬────────────┘ │ │ └─────────┬────────────────┘ │ 3. Retour vers ProConnect ▼ ┌────────────────────────┐ │ ProConnect │ └──────────┬─────────────┘ │ 4. Retour vers le service ▼ ┌────────────────────────┐ │ Fournisseur de │ │ Service - connecté │ └────────────────────────┘ ``` -------------------------------- ### Exemple de JSON d'ID token Source: https://partenaires.proconnect.gouv.fr/docs/ressources/glossaire Exemple de contenu d'un ID token JWT. Le JSON doit contenir les six clés obligatoires aud, exp, iat, iss, sub et nonce. Le champ nonce doit correspondre à la valeur envoyée lors de l'appel à api/v2/authorize. ```json { "aud": "895fae591ccae777094931e269e46447", "exp": 1412953984, "iat": 1412950384, "iss": "http://agentconnect.gouv.fr", "sub": "YWxhY3JpdMOp", "idp": "AC", "nonce": "12344354597459" } ``` -------------------------------- ### Requête d'autorisation avec claims pour acr Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/certification-dirigeant Requête d'autorisation simplifiée envoyée à l'endpoint /authorize de ProConnect. Elle inclut le paramètre claims encodé en URL qui demande la valeur acr pour la certification dirigeant. Le paramètre claims doit être correctement encodé en URL (URL-encoding) pour être valide. ```http GET /authorize? response_type=code& client_id=VOTRE_CLIENT_ID& scope=openid& redirect_uri=https%3A%2F%2Fvotre-application.fr%2Fcallback& claims=%7B%22id_token%22%3A%7B%22acr%22%3A%7B%22essential%22%3Atrue%2C%22value%22%3A%22https%3A%2F%2Fproconnect.gouv.fr%2Fassurance%2Fcertification-dirigeant%22%7D%7D%7D ``` -------------------------------- ### Demander le claim amr dans la requête Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/niveaux-acr Ajoutez ce paramètre à votre requête pour récupérer la liste des méthodes d'authentification dans le claim amr. Par défaut, ce claim n'est pas inclus dans l'ID Token et doit être explicitement demandé. ```json claims={ "id_token": { "amr": null } } ``` -------------------------------- ### Réponse du token_endpoint en cas de succès Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/implementation_technique Format de la réponse JSON renvoyée par le token_endpoint lors d'une demande de token réussie. Contient l'access_token, le token_type 'Bearer', expires_in (60 secondes) et l'id_token. ```json { 'access_token': , 'token_type': 'Bearer', 'expires_in': 60, 'id_token': } ``` -------------------------------- ### Paramètre claims pour acr certification-dirigeant Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/certification-dirigeant Incluez ce paramètre claims dans la requête à l'endpoint d'autorisation pour demander un ID token avec l'acr de niveau certification-dirigeant. L'attribut essential: true rend la valeur acr obligatoire pour votre service. La propriété value doit être égale à l'URL qui identifie le niveau de confiance souhaité. ```json { "claims": { "id_token": { "acr": { "essential": true, "value": "https://proconnect.gouv.fr/assurance/certification-dirigeant" } } } } ``` ```json "https://proconnect.gouv.fr/assurance/certification-dirigeant" ``` -------------------------------- ### Valeur acr pour certification dirigeant Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/certification-dirigeant ProConnect renvoie cette valeur dans le token après une certification dirigeant réussie. Elle indique que l'authentification a été certifiée pour le statut de dirigeant. ```json "acr": "https://proconnect.gouv.fr/assurance/certification-dirigeant", ``` -------------------------------- ### Validation côté serveur : erreur 403 si ACR non conforme Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/double_authentification Exemple de code à exécuter dans la fonction de callback pour vérifier les valeurs ACR de l'id_token et déclencher une erreur HTTP 403 si elles ne correspondent pas aux valeurs exigées. ```javascript throw new HTTPException(403, { message: "Vous ne pouvez pas accéder au service sans avoir une double authentification installée. Veuillez installer une application d'authentification et vous connecter à nouveau.", }); ``` -------------------------------- ### Filtrage par statut d'agent public avec le claim roles Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/restriction_acces Le claim `roles` indique si l'utilisateur est un agent public (`agent_public`, `agent_public_etat`, `agent_public_territorial`), ou est vide sinon. L'exemple montre deux cas : un agent public avec accès autorisé et un non-agent avec accès refusé. ```json "roles": ["agent_public", "agent_public_etat"] // agent public, accès autorisé "roles": [] // pas un agent public, accès refusé ``` -------------------------------- ### Demander le niveau ACR dans la requête /authorize Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/niveaux-acr Incluez ce paramètre dans la requête /authorize pour consulter le niveau ACR de l'authentification. L'attribut ACR est défini par la spécification OpenID Connect Core. ```json claims={ "id_token": { "acr": null } } ``` -------------------------------- ### Require minimum eIDAS level with acr claim Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/niveaux-eidas Add this JSON object to the /authorize request to require a minimum eIDAS level. The acr claim is marked as essential and the values array lists the acceptable levels, e.g., eidas2 and eidas3. ```json { "claims": { "id_token": { "acr": { "essential": true, "values": ["eidas2", "eidas3"] } } } } ``` -------------------------------- ### ProConnect button SVG data URI Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/bouton_proconnect SVG data URI for the ProConnect button icon. Used when not using the French government design system. ```svg jg5LjcwOGgtMS4xMjV2My41NzloLTEuNzk2Wm0yLjk5Ny03LjMyMmgtMS4yMDF2Mi4yMTNoMS4yYy4zOCAwIC42NzUtLjA5Ny44ODYtLjI5LjIyLS4xOTUuMzI5LS40NzMuMzI5LS44MzYgMC0uMzM3LS4xMS0uNjAyLS4zMjktLjc5Ni0uMjEtLjE5NC0uNTA2LS4yOTEtLjg4NS0uMjkxWk00Ny4yMyAxNi4xNjhWNy4zMTZoMi43MDdjLjk3IDAgMS43MzYuMjM2IDIuMzAxLjcwOC41NjUuNDcyLjg0NyAxLjExNy44NDcgMS45MzUgMCAuNTMtLjEyNi45OTUtLjM3OSAxLjM5LS4yNDQuMzg5LS41OS42ODgtMS4wMzcuODk5bDIuNzgyIDMuOTJoLTIuMTVsLTIuMzUyLTMuNTc5aC0uOTIzdjMuNTc5aC0xLjc5NVptMi44MDgtNy4zMjJoLTEuMDEydjIuMjEzaDEuMDEyYy4zOCAwIC42NzQtLjA5Ny44ODUtLjI5LjIxLS4xOTUuMzE2LS40NzMuMzE2LS44MzYgMC0uMzM3LS4xMDUtLjYwMi0uMzE2LS43OTYtLjIxLS4xOTQtLjUwNi0uMjkxLS44ODUtLjI5MVpNNTkuNTQ5IDcuMDYzYy42OSAwIDEuMzIzLjEyNiAxLjg5Ni4zOC41ODIuMjUyIDEuMDguNTkgMS40OTIgMS4wMTEuNDE0LjQyMS43MzQuOTE5Ljk2MiAxLjQ5Mi4yMjcuNTY1LjM0MSAxLjE2NC4zNDEgMS43OTYgMCAuNjMyLS4xMTQgMS4yMzUtLjM0MSAxLjgwOGE0LjQ4NSA0LjQ4NSAwIDAgMS0uOTYyIDEuNDhjLS40MTMuNDIxLS45MS43NTgtMS40OTIgMS4wMTFhNC42NDggNC42NDggMCAwIDEtMS44OTYuMzggNC43MzggNC43MzggMCAwIDEtMy40MDItMS4zOTEgNC40ODQgNC40ODQgMCAwIDEtLjk2MS0xLjQ4IDQuODU1IDQuODU1IDAgMCAxLS4zNDItMS44MDhjMC0uNjMzLjExNC0xLjIzMS4zNDItMS43OTYuMjI3LS41NzMuNTQ4LTEuMDcuOTYxLTEuNDkyLjQxMy0uNDIyLjkxLS43NTkgMS40OTItMS4wMTJhNC43MzcgNC43MzcgMCAwIDEgMS45MS0uMzc5Wm0wIDcuNjc2YTIuOCAyLjggMCAwIDAgMS4xMzgtLjIyOGMuMzU0LS4xNi42NTMtLjM3Ljg5OC0uNjMyLjI1Mi0uMjcuNDUtLjU4Ni41OTQtLjk0OWEzLjI3IDMuMjcgMCAwIDAgLjIxNS0xLjE4OCAzLjE3IDMuMTcgMCAwIDAgLS4yMTUtMS4xNzYgMi43OTEgMi43OTEgMCAwIDAtLjU5NS0uOTQ5IDIuNTQ4IDIuNTQ4IDAgMCAwLS44OTctLjYzMiAyLjY3MyAyLjY3MyAwIDAgMC0xLjEzOC0uMjRjLS40MTMgMC0uNzk3LjA4LTEuMTUxLjI0YTIuNjc4IDIuNjc4IDAgMCAwLS45MS42MzIgMi44OTkgMi44OTkgMCAwIDAtLjU4Mi45NDkgMy4xNyAzLjE3IDAgMCAwLS4yMTUgMS4xNzZjMCAuNDIxLjA3MS44MTcuMjE1IDEuMTg4LjE0My4zNjMuMzM3LjY3OS41ODEuOTQ5LjI1My4yNjEuNTU3LjQ3Mi45MS42MzIuMzU1LjE1Mi43MzkuMjI4IDEuMTUyLjIyOFonLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSdhJz48cGF0aCBmaWxsPScjZmZmJyBkPSdNMCAwaDIxMXY1OEgweicvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg== ``` -------------------------------- ### ProConnect button HTML markup Source: https://partenaires.proconnect.gouv.fr/docs/fournisseur-service/bouton_proconnect HTML structure for the ProConnect button with a form and a link to the ProConnect information page. The button uses the 'proconnect-button' class and includes a visually hidden text for screen readers. ```html

Qu’est-ce que ProConnect ?

``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.