2.1.0 • Published 2 years ago

@tadashi/koa-jwt-authz v2.1.0

Weekly downloads
3
License
MIT
Repository
github
Last release
2 years ago

koa-jwt-authz

NPM version Build Status Coverage Status

Validate a JWTs scope to authorize access to an endpoint.

Install

$ npm i -S @tadashi/koa-jwt-authz

koa >=2 is a peer dependency. Make sure it is installed in your project.

Usage

Use together with koa-jwt to both validate a JWT and make sure it has the correct permissions to call an endpoint.

import jwtAuthz from '@tadashi/koa-jwt-authz'
import jwt from 'koa-jwt'
import Koa from 'koa'
import Router from '@koa/router'

const app = new Koa()
const router = new Router()

router.get('/', ctx => {
  ctx.body = {home: 'free'}
})

router.get('/me',
  jwt({secret: 'shared_secret'}),
  jwtAuthz(['read:users']),
  ctx => {
    ctx.body = ctx.state.user
  }
)

app.use(router.middleware())
app.listen(process.env.PORT ?? 3000)

The JWT must have a scope claim and it must either be a string of space-separated permissions or an array of strings. For example:

# String: "write:users read:users"

# Array: ["write:users", "read:users"]

API

jwtAuthz(expectedScopes [, options])

parametertyperequireddefaultdescription
expectedScopesArrayyes-List of permissions
optionsObjectnosee belowOptions

options

parametertyperequireddefaultdescription
checkAllScopesBooleannofalseWhen true, all the expected scopes will be checked against the user's scopes
customScopeKeyStringnoscopeThe property name to check for the scope

Author

License

MIT © Thiago Lagden