jwt-smith
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

JWT Smith 🛡️

A powerful, customizable, and secure JWT authentication module for Node.js.

npm version License Build Status GitHub last commit GitHub commit activity Downloads


🚀 Features

Easy to Use – Simple API for signing, verifying, and handling JWT tokens.
🔐 Middleware Protection – Prebuilt Express middlewares for authentication and role-based access.
⚙️ Customizable – Flexible token handling with blacklisting, rotation, and configuration options.
📌 Secure – Supports token revocation, expiration, and advanced security best practices.
📚 Well-Documented – Comprehensive documentation for smooth integration.


📚 Installation

npm install jwt-smith

🛠️ Usage

❗❗🌐 For a comprehensive guide and detailed information, please visit the official documentation website. JWT Smith Documentation

@Note ❗ Debug logs have been added in the middleware functions to make the development process easier. It is highly recommended to disable debug logs in the production environment.

1️⃣ Initialize JWT Manager

import { JwtManager } from 'jwt-smith';

const jwtManager = new JwtManager({
	publicKey: process.env.PUBLIC_KEY || 'your-public-key',
	refreshTokenKey: process.env.REFRESH_TOKEN_KEY || 'your-refresh-key',
	signOptions: {
		algorithm: 'RS256',
		expiresIn: '1h',
	},
	verifyOptions: {
		algorithms: ['RS256'],
	},
	middlewareConfigs: {},
});

2️⃣ Sign a JWT Token

const token = await sign({
	payload: { id: 1, role: 'user' },
	secret: 'my-secret-key',
});

3️⃣ Verify a JWT Token

const decoded = await verify({
	token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',
	secret: 'my-public-key',
});
console.log(decoded); // { id: "123", role: "admin", iat: ..., exp: ... }

4️⃣ Middleware for JWT Header Authentication

import express from 'express';
import { validateJwtHeaderMiddleware } from 'jwt-smith';

const app = express();
app.use(validateJwtHeaderMiddleware);

app.get('/protected', (req, res) => {
	res.json({ message: 'Access granted!', user: req.user });
});

5️⃣ Middleware for JWT Cookie Authentication

import { validateJwtCookieMiddleware } from 'jwt-smith';

app.use(validateJwtCookieMiddleware);

app.get('/secure', (req, res) => {
	res.json({ message: 'Secure route accessed!', user: req.user });
});

🧩 Middleware List

Middleware Description
validateJwtHeaderMiddleware Validates JWT from the Authorization header
validateJwtCookieMiddleware Validates JWT from cookies and refreshes tokens if needed
roleBasedAuthenticationMiddleware Restricts access based on user roles

🔧 Configuration Options

JWT Smith provides customizable options for security and flexibility.

const jwtManager = new JwtManager({
	publicKey: process.env.PUBLIC_KEY || 'your-public-key',
	refreshTokenKey: process.env.REFRESH_TOKEN_KEY || 'your-refresh-key',
	signOptions: {
		algorithm: 'RS256',
		expiresIn: '1h',
	},
	verifyOptions: {
		algorithms: ['RS256'],
	},
	middlewareConfigs: {},
});

💬 Community & Support

💡 Documentation: Read the Docs
🐛 Report Issues: GitHub Issues
🌟 Feature Requests: Discussions


🐜 License

This project is licensed under the MIT License - see the LICENSE file for details.


🎯 Contribute

We welcome contributions! Check out our CONTRIBUTING.md to get started.


🚀 Get Started with JWT Smith Today! 🚀

npm install jwt-smith

Package Sidebar

Install

npm i jwt-smith

Weekly Downloads

2

Version

1.0.1

License

MIT

Unpacked Size

218 kB

Total Files

12

Last publish

Collaborators

  • dkariyasena