DAT
Un DAT est une chaîne ASCII séparée par des points (.). Chaque champ apparaît exactement une fois dans un ordre fixe, et la signature vérifie que les champs précédents correspondent exactement aux données transmises.
expire.cid.plain.secure.signatureChamps
| Champ | Représentation | Signification |
|---|---|---|
expire | Entier non signé décimal | Heure Unix à laquelle le DAT expire |
cid | Entier non signé hexadécimal en minuscules | ID du certificat utilisé pour la vérification |
plain | Base64Url sans padding | Bytes non chiffrés |
secure | Base64Url sans padding | Bytes protégés par l’algorithme de chiffrement du certificat |
signature | Base64Url sans padding | Signature des bytes ASCII originaux de expire.cid.plain.secure |
Comme plain est couvert par la signature, il ne peut pas être modifié, mais tout le monde peut le décoder. Placez les secrets, les données personnelles et les valeurs directement utilisées pour les décisions d’autorisation dans secure. Un champ secure vide est valide.
Représentation canonique
- Le DAT entier doit être en ASCII.
- Les nombres sont écrits sans signe, espace, préfixe ni zéro initial superflu. Seule la valeur zéro s’écrit
0. - Base64Url utilise l’alphabet adapté aux URL et n’autorise ni padding
=ni espace. - Les chaînes Base64Url non canoniques représentant les mêmes bytes de plusieurs façons sont rejetées.
- Une chaîne dont le nombre ou l’ordre des champs diffère n’est pas un DAT.
Ces règles empêchent différentes implémentations d’accepter des chaînes différentes comme un même DAT.
Émission
- Sélectionnez un certificat actuellement utilisable pour l’émission.
- Ajoutez le TTL du certificat à l’heure actuelle pour créer
expire. - Encodez
plainen Base64Url. - Chiffrez
secureavec l’algorithme de chiffrement du certificat. - Joignez les champs précédents avec des points et signez leurs bytes ASCII.
L’émission n’est autorisée que dans la fenêtre d’émission du certificat : start <= now <= start + duration.
Vérification
- Analysez le DAT selon les règles canoniques.
- Vérifiez que
expire > now. Un DAT dontexpire == nowest expiré. - Trouvez le certificat correspondant à
cidet confirmez qu’il reste valide pour la vérification. - Vérifiez la signature des bytes originaux de
expire.cid.plain.secure. - Authentifiez et déchiffrez
secure, puis renvoyez-le avecplain.
Une API d’analyse qui ne vérifie pas la signature sert uniquement à l’observation ou au diagnostic. N’utilisez jamais son résultat pour l’authentification ou l’autorisation.
Responsabilités hors spécification
DAT ne définit ni le magasin d’utilisateurs, ni la méthode de connexion, ni le modèle d’autorisation, ni l’en-tête de transport du jeton, ni la liste de révocation. L’application décide quelles requêtes peuvent utiliser un payload vérifié.