
Product
Introducing GitHub Actions Scanning Support
Detect malware, unsafe data flows, and license issues in GitHub Actions with Socket’s new workflow scanning support.
An authentication library that uses JWT for access and refresh tokens with sensible defaults.
An authentication library that uses JWT for access and refresh tokens with sensible defaults.
npm install authomatic
Please create an issue if you need another store.
const Store = require('authomatic-redis');
const Authomatic = require('authomatic');
const store = Store();
const authomatic = new Authomatic({store});
// Use authomatic functions
npm test
The example has been updated to reflect all the new changes.
Promise.<Tokens>Returns access and refresh tokens
StringVerifies token, might throw jwt.verify errors
Promise.<Tokens>Issues a new access token using a refresh token and an old token (can be expired).
Promise.<Boolean>Invalidates refresh token
Promise.<Boolean>Invalidates all refresh tokens
Stringa string greater than 20 characters
StringRegular JWT token. Its payload looks like this:
{
"t": "Authomatic-AT",
"uid": "userId",
"exp": "someNumber",
"jti": "randomBytes",
...otherClaims,
"pld": {
...otherUserContent
}
}
Stringregular JWT token. Its payload looks like this:
{
"t": "Authomatic-RT",
"iss": "Authomatic",
"aud": ["Authomatic"]
"uid": "userId",
"exp": "someNumber",
"jti": "randomBytes",
"accessTokenJTI": "randomBytes"
}
ObjectToken pairs
ObjectVerify options to be used when verifying tokens
ObjectThe allowed user options to for signing tokens
StandardErrorThe refresh token was not found.
StandardErrorThe tokens provided do not match
StandardErrorThe provided input is not a valid token.
Promise.<Tokens>Returns access and refresh tokens
Kind: global variable
Throws:
TypeError typeError if any param was not sent exactly as specified| Param | Type | Description |
|---|---|---|
| userId | String | |
| secret | Secret | |
| [content] | Object | user defined properties |
| [prolong] | Boolean | if true, the refreshToken will last 4 days and accessToken 1 hour, otherwise the refresh token will last 25 minutes and the accessToken 15 minutes. |
| [signOptions] | SignOptions | Options to be passed to jwt.sign |
StringVerifies token, might throw jwt.verify errors
Kind: global variable
Returns: String - decoded token
Throws:
InvalidToken invalidTokenTypeError typeError if any param was not sent exactly as specified| Param | Type | Description |
|---|---|---|
| token | String | |
| secret | Secret | |
| [verifyOptions] | VerifyOptions | Options to pass to jwt.verify. |
Promise.<Tokens>Issues a new access token using a refresh token and an old token (can be expired).
Kind: global variable
Throws:
RefreshTokenNotFound refreshTokenNotFoundTokensMismatch tokensMismatchTypeError typeError if any param was not sent exactly as specified| Param | Type | Description |
|---|---|---|
| refreshToken | String | |
| accessToken | String | |
| secret | Secret | |
| signOptions | SignOptions | Options passed to jwt.sign, ignoreExpiration will be set to true |
Promise.<Boolean>Invalidates refresh token
Kind: global variable
Returns: Promise.<Boolean> - true if successful, false otherwise.
Throws:
TypeError typeError if any param was not sent exactly as specifiedInvalidToken invalidToken| Param | Type |
|---|---|
| refreshToken | String |
Promise.<Boolean>Invalidates all refresh tokens
Kind: global variable
Returns: Promise.<Boolean> - true if successful, false otherwise.
Throws:
TypeError typeError if any param was not sent exactly as specified| Param | Type |
|---|---|
| userId | String |
Stringa string greater than 20 characters
StringRegular JWT token. Its payload looks like this:
{
"t": "Authomatic-AT",
"uid": "userId",
"exp": "someNumber",
"jti": "randomBytes",
...otherClaims,
"pld": {
...otherUserContent
}
}
Stringregular JWT token. Its payload looks like this:
{
"t": "Authomatic-RT",
"iss": "Authomatic",
"aud": ["Authomatic"]
"uid": "userId",
"exp": "someNumber",
"jti": "randomBytes",
"accessTokenJTI": "randomBytes"
}
ObjectToken pairs
Kind: global typedef
Properties
| Name | Type | Description |
|---|---|---|
| accessToken | AccessToken | |
| accessTokenExpiresAt | Number | epoch |
| refreshToken | RefreshToken | |
| refreshTokenExpiresAt | Number | epoch |
ObjectVerify options to be used when verifying tokens
Kind: global typedef
Properties
| Name | Type | Description |
|---|---|---|
| [audience] | Array | String | checks the aud field |
| [issuer] | String | Array | checks the iss field |
| [ignoreExpiration] | Boolean | if true, ignores the expiration check of access tokens |
| [ignoreNotBefore] | Boolean | if true, ignores the not before check of access tokens |
| [subject] | String | checks the sub field |
| [clockTolerance] | Number | String | |
| [maxAge] | String | Number | |
| [clockTimestamp] | Number | overrides the clock for the verification process |
ObjectThe allowed user options to for signing tokens
Kind: global typedef
Properties
| Name | Type |
|---|---|
| [nbf] | Number |
| [aud] | Array | String |
| [iss] | String |
| [sub] | String |
StandardErrorThe refresh token was not found.
Kind: global typedef
Properties
| Name | Type | Default |
|---|---|---|
| [name] | String | 'RefreshTokenNotFound' |
StandardErrorThe tokens provided do not match
Kind: global typedef
Properties
| Name | Type | Default |
|---|---|---|
| [name] | String | 'TokensMismatch' |
StandardErrorThe provided input is not a valid token.
Kind: global typedef
Properties
| Name | Type | Default |
|---|---|---|
| [name] | String | 'InvalidToken' |
If you want to create a new store you need to expose the following functions:
/**
* Register token and refresh token to the user
* @param {String} userId
* @param {String} refreshTokenJTI
* @param {String} accessTokenJTI
* @param {Number} ttl time to live in ms
* @returns {Promise<Boolean>} returns true when created.
*/
function add(userId, refreshTokenJTI, accessTokenJTI, ttl){...}
/**
* Remove a single refresh token from the user
* @param userId
* @param refreshTokenJTI
* @returns {Promise<Boolean>} true if found and deleted, otherwise false.
*/
function remove(userId, refreshTokenJTI) {...}
/**
* Removes all tokens for a particular user
* @param userId
* @returns {Promise<Boolean>} true if any were found and delete, false otherwise
*/
function removeAll(userId) {...}
You may need to expose a reference to the store if the user may need to handle connections during testing for example.
FAQs
An authentication library that uses JWT for access and refresh tokens with sensible defaults.
We found that authomatic demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Detect malware, unsafe data flows, and license issues in GitHub Actions with Socket’s new workflow scanning support.

Product
Add real-time Socket webhook events to your workflows to automatically receive pull request scan results and security alerts in real time.

Research
The Socket Threat Research Team uncovered malicious NuGet packages typosquatting the popular Nethereum project to steal wallet keys.