同時接続ユーザー数が増加するにつれて、セッション(Session)の数も増加し、セッションサーバーに過大な負荷が発生します。
DATは、このようなセッションサーバーの負荷問題を解決し、サーバー間で状態を共有しない(Stateless)効率的な認証を実現するために設計されたトークン仕様です。
有効期限 : uint64 (Unix Time)
CID : Hex (uint64)
平文データ : Base64Url (Binary)
暗号化データ : Base64Url (Binary)
署名 : Base64Url (Binary)
DATとJWT(JSON Web Token)は、ピリオド(.)で区切られたトークン構造と署名(signature)による検証方式を共有していますが、内部設計において以下のような重要な違いがあります。
JWT 構造
| header | body | signature |
|---|---|---|
| Base64Url (JSON String) | Base64Url (JSON String) | Base64Url (Binary) |
DAT 構造
| 有効期限 | CID | 平文データ | 暗号化データ | 署名 |
|---|---|---|---|---|
| Unixtime (uint64) | Hex (uint64) | Base64Url (Binary) | Base64Url (Encrypt Binary) | Base64Url (Binary) |
暗号化データ (secure) フィールド): JWTは基本的にペイロード(Payload)が平文で公開されており、暗号化が必要な場合はJWEのような別途の仕様を適用する必要があります。一方、DATは暗号化データ フィールドによってトークン自体が暗号化機能をサポートしています。exp (Claims) フィールドが任意項目ですが、DATは有効期限 (expire) フィールドがトークン構造上で強制されており、有効期限の検証が必須で実行されます。