HAproxy BASIC認証 REST API 用 と ブラウザ GUI 認証で 処理を切り分ける
HAproxy
Node-RED
Basic認証
HTML
IT技術
IoT
REST
Ubuntu
config
https
linux
systemctl
サービス
サービス化
デーモン
フロントエンド
ユーザーリスト
設定
HAproxy の BASIC 認証で、REST API 用 に適した処理の 記述 と ブラウザから ユーザー パスワードを手入力させるBASIC 認証では、適した書き方が違うようなので、処理を書き分けた。
( 動作環境メモ )
Ubuntu 18.04.4 LTS
HA-Proxy version 1.8.8-1ubuntu0.11 2020/06/22
## ( 上段 global のコンフィグ等は 略します。 )
## -------------------------------------------------------
## userlist
## -------------------------------------------------------
userlist 管理者_user
user 管理者 password ハッシュ化したパスワード
userlist panpy_user
user 一般usr insecure-password パスワード平文
# ---------------------------------------------------------------
# フロントエンドを定義
# port : 80 で待ち受け
# ---------------------------------------------------------------
frontend http-in
bind *:80
# forntend 内に BASIC認証を記述しない。
# backendの定義で記述し、BASIC認証の処理を用途で分ける。
# API SERVER
default_backend get_away
# -------------------------------------------
# バックエンドを定義
# -------------------------------------------
backend gui_servers
acl auth_一般_ok http_auth(panpy_user)
http-request auth if !auth_一般_ok
backend api_servers
acl auth_管理者_ok http_auth(管理者_user)
http-request deny unless auth_管理者_ok
# -------------------------------------------
# Good-bye
# -------------------------------------------
backend get_away
http-request deny
# -----------------------------------------------
# 上記、漢字のところは適宜 半角英数に修正すると使えるかと思います。
|
ーーー
ポイントは、
・フロントエンド定義のところで BASIC認証を記述しない。
・バックエンド定義のところで、BASIC認証を記述する。
|
こうすることで、 それぞれに意図したBASIC認証が動作してくれるようになりました。
HAproxy は、フロントに立たせると、 NodeRED のセキュリティを高めてくれたり相性いいと思うので、どんどん積極的に組み合わせて 使っていきたい!