随着同时在线用户数量的增加,会话(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) 字段在令牌结构上为强制字段,有效期验证必须执行。