DAT
Ein DAT ist eine ASCII-Zeichenfolge mit durch Punkte (.) getrennten Feldern. Jedes Feld erscheint genau einmal in einer festen Reihenfolge. Die Signatur bestätigt, dass die vorherigen Felder unverändert übertragen wurden.
expire.cid.plain.secure.signatureFelder
| Feld | Darstellung | Bedeutung |
|---|---|---|
expire | Dezimaldarstellung einer vorzeichenlosen Ganzzahl | Unix time, zu der DAT abläuft |
cid | Kleingeschriebene Hexadezimaldarstellung einer vorzeichenlosen Ganzzahl | ID des Zertifikats für die Prüfung |
plain | Base64Url ohne padding | Unverschlüsselte Bytes |
secure | Base64Url ohne padding | Mit dem Verschlüsselungsalgorithmus des Zertifikats geschützte Bytes |
signature | Base64Url ohne padding | Signatur über die ursprünglichen ASCII-Bytes von expire.cid.plain.secure |
plain liegt im Signaturbereich und kann deshalb nicht verändert werden, lässt sich aber von jedem decodieren. Geheimnisse, personenbezogene Daten und Werte, die unmittelbar für Berechtigungsentscheidungen verwendet werden, gehören in secure. Ein leeres secure ist ebenfalls gültig.
Kanonische Form
- Der vollständige DAT muss aus ASCII bestehen.
- Zahlen werden ohne Vorzeichen, Leerzeichen, Präfixe oder unnötige führende Nullen dargestellt. Nur der Wert
0wird als0geschrieben. - Base64Url verwendet das URL-safe-Alphabet und erlaubt weder
=-padding noch Leerzeichen. - Nicht kanonische Base64Url-Darstellungen, die dieselben Bytes durch unterschiedliche Zeichenfolgen ausdrücken, werden abgelehnt.
- Bei abweichender Anzahl oder Reihenfolge der Felder handelt es sich nicht um einen DAT.
Diese Regeln verhindern, dass verschiedene Implementierungen unterschiedliche Zeichenfolgen als denselben DAT akzeptieren.
Ausstellung
- Wählen Sie ein derzeit ausstellungsfähiges Zertifikat.
- Addieren Sie die TTL des Zertifikats zur aktuellen Zeit, um
expirezu erzeugen. - Codieren Sie
plainals Base64Url. - Verschlüsseln Sie
securemit dem Verschlüsselungsalgorithmus des Zertifikats. - Signieren Sie die ASCII-Bytes der durch Punkte verbundenen vorherigen Felder.
Eine Ausstellung ist nur innerhalb des Ausstellungszeitraums des Zertifikats möglich: start <= now <= start + duration.
Prüfung
- Parsen Sie den DAT nach den kanonischen Regeln.
- Prüfen Sie, ob
expire > nowgilt. Beiexpire == nowist der DAT abgelaufen. - Suchen Sie das Zertifikat für
cidund prüfen Sie, ob es prüffähig ist. - Prüfen Sie die Signatur der ursprünglichen Bytes von
expire.cid.plain.secure. - Authentifizieren und entschlüsseln Sie
secureund geben Sie es zusammen mitplainzurück.
Parsing-API, die keine Signatur prüfen, dienen nur zur Beobachtung oder Diagnose. Ihre Ergebnisse dürfen nicht zur Authentifizierung oder Vergabe von Berechtigungen verwendet werden.
Verantwortlichkeiten außerhalb der Spezifikation
DAT definiert weder Benutzerspeicher noch Anmeldeverfahren, Berechtigungsmodell, Header für die Tokenübertragung oder Sperrliste. Die Anwendung entscheidet, welche Anfragen sie anhand des geprüften payload zulässt.