node.jsでBasic認証(express)

  • expressにモジュールがある。
#!/usr/bin/env node

var basicAuth = require('express').basicAuth;
var app = require('express').createServer();

// 全てのアクセスに対してBasic認証をかける
app.all('/', basicAuth(function(user, pass) {
    return 'admin' == user && 'express' == pass;
}));
app.all('/*', basicAuth(function(user, pass) {
    return 'admin' == user && 'express' == pass;
}));

app.get('/', function(req, res) {
    res.send('hello world!');
});

app.listen(3000);
    • ブラウザで一度認証を通すと閉じるまで残っているのでコマンドでテストする。
$ curl --include 192.168.1.11:3000/

HTTP/1.1 401 Unauthorized
X-Powered-By: Express
WWW-Authenticate: Basic realm="Authorization Required"
Connection: keep-alive
Transfer-Encoding: chunked

$ curl --include 192.168.1.11:3000/ --user admin:express 

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 12
Connection: keep-alive