🎟️

Node Express Passport Berar認証

2022/06/30に公開

Berar Tokenとは

Bearer=持ってきた人、つまり「持参人」。Tokenは「切符」のことです。切符を持参した人なので個人が誰であり、「切符」を持ってきた人は誰でも入場できるというものです。

作成方法

ディレクトリを作成します。

md bearer
cd bearer

プロジェクトを初期化します。

npm init -y

必要なモジュールをインストールします。

npm install express passport passport-http-bearer

ファイル名app.jsを新規作成、下記のコードを記載します。

const express = require('express');
const passport = require('passport');
const Strategy = require('passport-http-bearer').Strategy;
const record = {
    id: 1,
    username: 'taro',
    token: '123456789',
    emails: [{
        value: 'taro@ulinco.com'
    }]
}

passport.use(new Strategy(
    (token, cb) => {
        if (token === record.token) {
            return cb(null, record.username);
        } else {
            return cb(null, false)
        }
    }
));

const app = express();

app.get('/',
    passport.authenticate('bearer', {
        session: false
    }), (req, res) => {
        res.json({
            username: record.username,
            email: record.emails[0].value
        })
    });

app.listen(3000, () => console.log('listening on port 3000!'))
node app.js

次にVisual Studio Codeの機能拡張で、Rest Clientをインストールし同じフォルダにサーバーに認証されたユーザーのuser.httpを作成し下記を記載します。

###
GET http://127.0.0.1:3000/
Authorization: Bearer 123456789 

###
GET http://127.0.0.1:3000/?access_token=123456789

Send Requestを押すと認証し、ユーザーIDとemailを返却するレスポンスが返却されます。

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 45
ETag: W/"2d-tHw1sSDlim8yPRGkLwiZhCx/A2s"
Date: Thu, 30 Jun 2022 12:43:27 GMT
Connection: close

{
  "username": "taro",
  "email": "taro@ulinco.com"
}

Discussion