3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Webの勉強はじめてみた その26 〜Basic認証とCookie〜

Posted at

N予備校「プログラミング入門Webアプリ」を受講しています。
今回は第3章18,19節です。

Basic認証

:::note Authorization というヘッダの値に、エンコードされた ID とパスワードを含めて通信することで認証する方式 :::

暗号化されていない方式でエンコード(Base64)されているので、盗聴や改竄のリスクがある。
atobを使うと元の情報が見えてしまう。

http-auth

`http-auth` パッケージを利用する。 `yarn add http-auth@4.1.9`
//Basic認証のモジュール
const auth = require('http-auth');
//basic関数
//realmプロパティに、Basic認証に保護する領域を規定する文字列 => 説明書き(認証が必要な範囲を書く)
//コールバックにユーザー名とパスワードのチェック => 認証するパターンを書く
const basic = auth.basic(
    { realm: 'Enquetes Area.'},
    (username, password, callback) =>{
      callback(username === 'guest' && password === 'xaXZJQmE');
    }
  )
 
http.createServer(basic.check((req, res) =>{}

basic.check()メソッドによって認証処理を行う。

ステータスコードとログアウト

100 番台は、処理中 200 番台は、成功 300 番台は、リダイレクト (場所が移転したため移動を促す) 400 番台は、クライアントのエラー 500 番台は、サーバーのエラー

200 - OK は、リクエストの成功
401 - Unauthorized は、アクセス権不正

if(req.url === '/logout'){
  res.writeHead(401, {
    'Content-Type': 'text/plain; charset=utf-8'
  });
  res.end('ログアウトしました');
  return;
}

Cookie

:::note Web ブラウザに情報を記録するための仕組み。有効期限を設定できる。 :::

内部的には HTTP のリクエストヘッダの Cookie という項目と、 レスポンスヘッダの Set-Cookie という項目を利用することで実現している。

Cookieの設定

res.setHeader('Set-Cookie', `last_access=${now};expires=${limit_time}`);

last_accessがキー、値がnow
expiresが有効期限。

Cookieの値取得

const cookies = req.headers.cookie;
const last_access_time = cookies ? parseInt(cookies.split('last_access=')[1]) : now;

last_access=を区切り文字としてsplitで配列にする。
もしcookiesがtrue なら cookiesを表示、falseなら現在時刻を表示。

まとめ

PHPではCookieの他にSessionを利用したりしたけれど、Sessionはちょっとイメージしにくかった印象がある。

Basic認証ってルーターの管理画面を覗いたりする時に使われてるくらい?今はあんまり使われてない感じかな。

3
1
2

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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?