Node-RED Dashboard 2.0 に Basic 認証をかけるアイデアのメモ

Node-RED Dashboard 2.0 に Basic 認証をかけるアイデアのメモ

Node-RED Dashboard 2.0 に Basic 認証をかけるアイデアのメモです。

背景

Node-RED Dashboard 2.0 でも Basic 認証をかけたいので、ひとまずの案としてやってみます。

Settings | Node-RED Dashboard 2.0

こちらにあるように、Node-RED 自身の設定ファイル settings.js で dashboard の項目を作ってミドルウェアの形で認証を入れれるので、これでやってみます。

settings.js の修正

まず、

npm i basic-auth

で basic-auth をインストールして Basic 認証ができるようにします。

const auth = require('basic-auth');

settings.js に以下の記述を加えます。


    dashboard: {
        middleware: function (req, res, next) {
            const auth = req.headers['authorization'];
            if (!auth || auth.indexOf('Basic ') === -1) {
                res.setHeader('WWW-Authenticate', 'Basic realm="Authorization required"');
                res.sendStatus(401);
                return;
            }
            const [username, password] = Buffer.from(auth.split(' ')[1], 'base64')
                .toString().split(':');
            if (username === 'your-username' && password === 'your-password') {
                next();
            } else {
                res.sendStatus(403);
            }
        }
    },

こちらを設定して Node-RED を再起動すると、

/dashboard でアクセスすると Basic 認証がかかっています。

実際の流れはこのようになってます。

本来であれば、さらに、Node-RED ダッシュボードに Basic 認証付与 記事にあるような bcrypt での照合を入れたりしますが、一旦は平文で Basic 認証ができます!