@life-without-barriers/lambda-authentication

2.0.1 • Public • Published

lambda-authentication

volkswagen status

JWT auth for API Gateway custom authorizers & Serverless

Uses HMACSHA256 with a shared secret. If you are using tokens signed using RSA, v1 might give you some ideas. Uses a cookie to roundtrip the JWT, so make sure you consider CSRF protection on your api endpoints.

requirements

This package is intended to run on node v6.10.x (the latest version of node available to lambda at the time)

usage

First, export the authorizer with the correct path:

const authorizer = require('@life-without-barriers/lambda-authentication').authorizer

exports.myAuthorizer = authorizer({
  path: '/my-cool-site', // The path to your API
  logger: bunyan.createLogger({ name: 'my-app' }), // Accepts any bunyan logger. optional
  audience: 'abc123', // The audience
  issuer: 'my-openid-org', // the issuer
  cookieName: 'foo', // the name of the cookie that contains the JWT
  secret: 'secret key for HMAC signing'
})

Then, expose the lambda in your serverless.yml and delegate authorization to it:

functions:
  myAuthorizer:
    handler: app.myAuthorizer
  app:
    handler: app.myApp
    events:
      - http:
          path: /my-cool-site
          method: get
          cors: true
          authorizer:
            name: myAuthorizer
            identitySource: method.request.header.Cookie # IMPORTANT! use cookie auth

Package Sidebar

Install

npm i @life-without-barriers/lambda-authentication

Weekly Downloads

7

Version

2.0.1

License

MIT

Last publish

Collaborators

  • danieloost
  • david.ceccato
  • joshnorris
  • jing.gao
  • samjeffress
  • matj
  • sheakelly
  • timhogan
  • mark.walters.lwb
  • luke.klein