以前、Raspberry Piで学習リモンコンサーバを作ってみました。
Node.js + ExpressでWebサーバを作成しましたが、何のセキュリティもかけておりませんので、IPアドレスさえわかれば、誰でもリモコンを操作できてしまいます。
最低限のセキュリティとして、ユーザー名とパスワードを入力しないと画面が表示されないように、少し改造したいと思います。
ログイン画面の作成等が不要で、いちばん手間がかからずに済む、Basic認証を使った方法を記録しておこうと思います。
※自宅LANでの使用を想定しております。インターネットに直接公開するWebサーバの場合、パスワードの盗聴が容易なBasic認証ではなく、他のより安全な認証方法をご使用ください。
Node.js + Express.jsのBasic認証設定手順
Node.jsのバージョンは10.3.0、Exprss.jsのバージョンは4.16.0を使用して確認しました。
- npmコマンドでbasic-auth-connectをインストールしました。
npm install basic-auth-connect --save
- app.jsファイルを変更し、次の行を追加しました。
var basicAuth = require('basic-auth-connect'); app.use(basicAuth( 'admin', 'piyopiyo' ))
以上で設定完了です。
この場合、ユーザー名はadmin、パスワードはpiyopiyoを入力しないと画面が表示されなくなります。
basicAuth()関数の引数にコールバック関数を渡せば、複数のユーザーを作成したり、データベースやファイルからユーザー名を取得して認証することもできそうです。
詳細はドキュメントを御覧ください。