По мере роста числа одновременно подключённых пользователей количество сессий (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) принудительно закреплено в структуре токена, что делает проверку срока действия обязательной.