Basic認証とは
HTTPヘッダのAuthorizationに、エンコードされたIDとパスワードを含めて通信をすることで認証する方式。
暗号化されないBase64という方式でエンコードを行うため、HTTPで使用すると盗聴や改竄をされる恐れがある。
そのため使うときはHTTPSを使うべきであり、本格的な会員サイトなどには使うべきでない。
参考:WEB担当者Forum
Digest認証
Basic認証のパワーアップ版
ユーザ名とパスワードをMD5でハッシュ化(暗号化)して送る。
Node.jsでBasic認証をする方法
//モジュールを参照
var auth = require('http-auth');
//basic認証の設定
var basic = auth.basic({
//認証領域の設定(アクセスしているコンピュータやシステムの簡単な説明)
realm: "Access to the staging site"
}, (username, password, callback) => {
//ユーザー名とパスワードの設定
callback(username === "Tina" && password === "Bullock");
}
);
// HTTPサーバーを作っている。basic認証を導入するにはサーバーにbasicと書く
http.createServer(basic, (req, res) => {
res.end(`Welcome to private area !`);
/*
*
*
* サーバーへのリクエストやサーバーからのレスポンスの設定はここに書く
*
*/
}).listen(8000);
この認証を使い、chromeデベロッパーツールのNetwork欄をみると、
ヘッダーをみることができ、Authorizationという部分にエンコードされた
ユーザー名とパスワードがある。
Authorization: Basic Z3Vlc3QxOm5hN2hFcEV3
以上の部分のZ3Vlc3QxOm5hN2hFcEV3をコピーし、
コンソールでユーザ名とパスワードの確認ができる。
$ atob(Z3Vlc3QxOm5hN2hFcEV3)
> "ユーザー名:パスワード"
basic認証でユーザーとパスワードをファイルから読み取る方法
auth.basicの中で、fileの設定をすれば、ファイルから読み取りができる。
'use strict';
const http = require('http');
const auth = require('http-auth');
const basic = auth.basic({
realm: 'Enter username and password.',
file: 'ファイル'
});
http.createServer(basic, (req, res) => {
res.end(`Welcome to private area !`);
/*
*
*
* サーバーへのリクエストやサーバーからのレスポンスの設定はここに書く
*
*/
}).listen(8000);
ファイル
//ユーザー名:パスワード
tarou:taroimo
guest1:1129
guest2:1996