Package detail

koa-basic-auth

koajs81.8kMIT4.0.0

Blanket basic auth middleware for koa

koa, auth, authentication, basicauth

readme

koa-basic-auth Build Status

Add simple "blanket" basic auth with username / password. If you require anything more specific just use the basic-auth module.

v4.x+ Breaking Change: This package no longer requires both a username and a password. Either or is supported, see #39 for more insight.

Installation

$ npm install koa-basic-auth

Example

Password protect downstream middleware:

const auth = require('koa-basic-auth');
const Koa = require('koa');
const app = new Koa();

// custom 401 handling
app.use(async (ctx, next) => {
  try {
    await next();
  } catch (err) {
    if (401 == err.status) {
      ctx.status = 401;
      ctx.set('WWW-Authenticate', 'Basic');
      ctx.body = 'cant haz that';
    } else {
      throw err;
    }
  }
});

// require auth
app.use(auth({ name: 'tj', pass: 'tobi' }));

// secret response
app.use(async (ctx) => {
  ctx.body = 'secret';
});

app.listen(3000, function () {
  console.log('listening on port 3000');
});

Example request:

$ curl -H "Authorization: basic dGo6dG9iaQ==" http://localhost:3000/ -i
HTTP/1.1 200 OK
X-Powered-By: koa
Content-Type: text/plain; charset=utf-8
Content-Length: 6
Date: Sat, 30 Nov 2013 19:35:17 GMT
Connection: keep-alive

secret

Using the mount middleware you may specify auth for a given prefix:

const mount = require('koa-mount');
const auth = require('koa-basic-auth');

app.use(mount('/admin', auth({ name: 'tobi', pass: 'ferret' })));

License

MIT

changelog

3.0.0 / 2018-05-16

  • show authentication window in browser (#15)
  • npm: disable package-lock
  • travis: add node 10
  • bump deps

2.0.0 / 2016-03-18

  • update to promise-based middleware

1.1.2 / 2014-09-14

  • bump basic-auth

1.1.1 / 2014-01-19

  • fix: handle requests with no auth headers

1.1.0 / 2013-11-30

  • rewrite as blanket middleware