UNPKG

hashbasedtoken

Version:
78 lines (51 loc) 2.08 kB
# hashbasedtoken Hash-Based Token, typically looks like the following. ```text uuuuu.vvvvv.xxxxx ``` - `uuuuu` is `id` (base64url) - `vvvvv` is `expires` (base64url) - `xxxxx` is `signature` (base64url) A token based on an ID, such as a UUID Hash-Based Token (hashbasedtoken), has a length of 126 characters, whereas a JSON Web Token (jsonwebtoken) has a length of 187 characters. ## Install ```bash npm install hashbasedtoken ``` ## Quick Start Get up and running with a single import. ### Sign ```ts import hbt from 'hashbasedtoken'; const token = await hbt.sign('token_id', 'super_secret_key', { algorithm: 'HS256' expiresIn: '5m', }); ``` options: - algorithm (default: HS256) > Eg: `"HS256"`, `"HS384"`, `"HS512"`, `"RS256"`, `"RS384"`,`"RS512"`, `"PS256"`, `"PS384"`, `"PS512"`, `"ES256"`, `"ES384"`, `"ES512"`. A hash algorithm, otherwise algorithm is used by default (`"HS256"` is equal to `"HMAC using SHA-256 hash algorithm"`). - expiresIn (default: 120) > Eg: `60`, `"2s"`, `"5m"`, `"10h"`, `"2 days"`, `"7d"`. A numeric value is interpreted as a seconds count. If you use a string be sure you provide the time units (days, hours, etc), otherwise milliseconds unit is used by default (`"120"` is equal to `"120ms"`). ### Verify ```ts try { const isValid = await hbt.verify(token, 'super_secret_key'); console.log(isValid); } catch (err: any) { console.log(err); } ``` ### Get token id ```ts const tokenId = hbt.getTokenId(token); ``` ### Get token expires (Unix Timestamp in milliseconds) ```ts const expires = hbt.getTokenExpires(token); ``` ### Check token expires (not verify) ```ts const isExpire = hbt.isExpires(token); ``` ### Remark However, it's essential to strike a balance between token length and security. While short tokens have their advantages, they should still provide a sufficient level of security for the specific application. Token security also depends on other factors, such as token complexity, encryption, and proper implementation.