jwt認証とo-auth認証は全く違うので混同しないこと

2つの認証

Basic認証

よくあるやつ

  • ログインとパスワードで行う認証

O-Auth2.0

概要

  • 簡単に言うとAPPサーバとは別に認可サーバをたてるか、使わせてもらってアクセストークンをもらう
  • アクセストークンとはつまり入場券
  • これをもってAPPサーバにアクセスするとAPPサーバにアクセスできる
  • アクセルトークンはJWTにして送られることがよくある

jwt認証

概要

なぜjwt認証するのか

  • o-auth2.0認証の場合、本来ならばクライアントアプリは、前述アクセストークンを認可サーバで認証して随時もらってからAPPサーバに接続する
  • basic認証でも随時、セッションIDをサーバサイドサーバ側で保持して、クッキーのセッションIDと称号する処理を毎回フロントエンドサーバで実施する
  • 以上のような都度サーバサイド側での称号をしないために、jwtにして、クライアントにはクッキーにして保持してもらって、リクエスト時に、リクエストヘッダーにjwtを入れてAPIを読んでもらう
  • jwtが不正だったらエラーが返却される

jwtのサンプル

jwtライブラリ

$ npm install --save jsonwebtoken
$ npm install --save @types/jsonwebtoken

jwtサンプル

mport * as jwt from 'jsonwebtoken';

const jwtPayload = {
    email: 'xx@xx.com',
    name: 'おれ',
};
const jwtSecret = 'secret_key_goes_here';
const jwtOptions = {
    algorithm: 'HS256',
    expiresIn: 'Xs',
};

const token = jwt.sign(jwtPayload, jwtSecret, jwtOptions);
import * as jwt from 'jsonwebtoken';

const jwtSecret = 'secret_key_goes_here';
const token = '...';

// 検証
jwt.verify( token, jwtSecret, (err: any, decoded: any) => {
    if (err) {
    } else {

    }
});