express.js + passport.jsで1分でbasic認証を実装する

f:id:k-kty:20190307181543p:plain

passport.jsを用いると、expressでbasic認証が簡単にできます。

準備

$ npm i express passport passport-http

コード

以下のファイルをindex.jsとして保存します。

const express = require('express');
const passport = require('passport');
const passportHttp = require('passport-http');

passport.use(new passportHttp.BasicStrategy(
  function(username, password, done) {
    if (username === 'correct-username' && password == 'correct-password') {
      return done(null, true);
    } else {
      return done(null, false);
    }
  }
));

const app = express();

app.get('/', passport.authenticate('basic', { session: false }), (req, res) => {
  res.sendStatus(200);
});

app.listen(3000);

確認

サーバーを立ち上げます。

$ node index.js

curlで動作を確かめてみます。

$ curl -u correct-username:correct-password http://localhost:3000
OK
$ curl http://localhost:3000
Unauthorized

正しく動いていることがわかります。