LoginSignup
2
3

More than 3 years have passed since last update.

http-authを使った簡単なBasic認証をやってみる

Last updated at Posted at 2019-11-08

Basic認証とは

HTTPヘッダのAuthorizationに、エンコードされたIDとパスワードを含めて通信をすることで認証する方式。
暗号化されないBase64という方式でエンコードを行うため、HTTPで使用すると盗聴や改竄をされる恐れがある。
そのため使うときはHTTPSを使うべきであり、本格的な会員サイトなどには使うべきでない。

参考:WEB担当者Forum

Digest認証

Basic認証のパワーアップ版
ユーザ名とパスワードをMD5でハッシュ化(暗号化)して送る。

Node.jsでBasic認証をする方法

http-authライブラリ

//モジュールを参照
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という部分にエンコードされた
ユーザー名とパスワードがある。
スクリーンショット 2019-11-08 23.24.22.png

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
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3