Skip to content

Plugin for Elysia for using JWT Authentication

License

Notifications You must be signed in to change notification settings

ga1az/elysia-jwt

 
 

Repository files navigation

@elysiajs/static

This package is a fork of @elysiajs/jwt and is not maintained by Elysia.JS team. This fork is created to fix iat validation issue

Plugin for Elysia for using JWT Authentication.

Installation

bun add @elysiajs/jwt

Example

import { Elysia, t } from 'elysia'
import { jwt } from '@elysiajs/jwt'
import { cookie } from '@elysiajs/cookie'

const app = new Elysia()
	.use(
		jwt({
			name: 'jwt',
			// This should be Environment Variable
			secret: 'MY_SECRETS'
		})
	)
	.use(cookie())
	.get('/sign/:name', async ({ jwt, cookie, setCookie, params }) => {
		setCookie('auth', await jwt.sign(params), {
			httpOnly: true
		})

		return `Sign in as ${params.name}`
	})
	.get('/profile', async ({ jwt, set, cookie: { auth } }) => {
		const profile = await jwt.verify(auth)

		if (!profile) {
			set.status = 401
			return 'Unauthorized'
		}

		return `Hello ${profile.name}`
	})
	.listen(8080)

Config

This package extends jose, most config is inherited from Jose.

Below are configurable properties for using JWT plugin

name

Name to decorate method as:

For example, jwt will decorate Context with Context.jwt

secret

JWT secret key

schema

Type strict validation for JWT payload

Jose's config

Below is the config inherits from jose

alg

@default 'HS256'

Algorithm to sign JWT with

crit

Critical Header Parameter.

iss

JWT Issuer

@see RFC7519#section-4.1.1

sub

JWT Subject

@see RFC7519#section-4.1.2

aud

JWT Audience

@see RFC7519#section-4.1.3

jti

JWT ID

@see RFC7519#section-4.1.7

nbf

JWT Not Before

@see RFC7519#section-4.1.5

exp

JWT Expiration Time

@see RFC7519#section-4.1.4

iat

JWT Issued At

@see RFC7519#section-4.1.6

About

Plugin for Elysia for using JWT Authentication

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 84.4%
  • JavaScript 15.6%