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 認証ができます!