magot developers

Identité fédérée

Le parent se connecte à magot avec l'identité de sa banque. magot n'a ni mot de passe ni compte à créer pour les clients d'une banque intégrée : la banque reste le fournisseur d'identité, magot vérifie ses jetons.

Deux intégrations, un seul point d'échange

IntégrationJeton présenté à magot
SDK dans l'app de la banqueun jeton JWT que l'app obtient de l'IdP de la banque pour magot (access token JWT ou id_token)
App magot marque blanchel'id_token obtenu par une connexion OIDC (code + PKCE) à l'IdP de la banque

Dans les deux cas, l'app l'échange contre une session magot par OAuth 2.0 Token Exchange (RFC 8693).

Échange

POST /v1/identity/token
Content-Type: application/x-www-form-urlencoded   (JSON accepté aussi)

grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&subject_token=<JWT de la banque>
&subject_token_type=urn:ietf:params:oauth:token-type:id_token
&device_id=<facultatif : appareil magot d'une session précédente>

subject_token_type : id_token, jwt ou access_token (JWT uniquement).

Réponse (Cache-Control: no-store) :

{
  "access_token": "mgt_p_…",
  "issued_token_type": "urn:ietf:params:oauth:token-type:access_token",
  "token_type": "Bearer",
  "expires_in": 900,
  "adult_id": "…", "household_id": "…", "device_id": "…",
  "provisioned": false
}

Le jeton magot s'utilise ensuite en Authorization: Bearer sur toute l'API.

Erreurs (RFC 6749 §5.2) : 400 avec error parmi invalid_request, invalid_grant (jeton invalide, expiré, émetteur inconnu, identité non liée), unsupported_grant_type, unsupported_token_type.

Vérification du jeton bancaire

Le jeton d'une banque ne peut ouvrir une session que dans son établissement : le même identifiant client dans deux banques donne deux parents distincts.

Sessions

Premier passage d'un client

Réglé par établissement :

Traçabilité

Chaque échange, liaison et déconnexion est inscrit au journal d'audit (audit_log) : fournisseur, parent, appareil, création de foyer, durée.

Mise en service (exploitation magot)

tsx scripts/add-identity-provider.ts <tenant> <issuer> <audience> --jwks-uri https://…/jwks.json [--link-only] [--ttl 900]

puis redémarrage du service (ou kill -HUP). La banque communique son issuer, l'URL de ses clés publiques et l'audience qu'elle émettra pour magot.