概要
前回 oauth2-proxy を構築しました
今回はその構築したプロキシを使って nginx と組み合わせてみます
環境
- Ubuntu 22.04
- golang 1.22.3
- oauth2-proxy 7.6
- nginx 1.18.0
nginx.conf (default) の修正
- vim /etc/nginx/sites-available/default
最低限設定が必要な箇所だけ紹介します
server ディレクティブを編集します
location /oauth2/
と location = /oauth2/auth
は必須です
そして認証をかけたい部分 (今回だと location /
) に auth_request と error_page お記載します
こうすることで / にアクセスされた際に oauth2-proxy に認証させることができます
server {
listen 80 default_server;
listen [::]:80 default_server;
location /oauth2/ {
proxy_pass http://localhost:4180;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Auth-Request-Redirect $request_uri;
# or, if you are handling multiple domains:
# proxy_set_header X-Auth-Request-Redirect $scheme://$host$request_uri;
}
location = /oauth2/auth {
proxy_pass http://localhost:4180;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Uri $request_uri;
# nginx auth_request includes headers but not body
proxy_set_header Content-Length "";
proxy_pass_request_body off;
}
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
auth_request /oauth2/auth;
error_page 401 =403 /oauth2/sign_in;
try_files $uri $uri/ =404;
}
}
oauth2-proxy 側は
前回の設定のままで OK です
動作確認
- sudo systemctl restart nginx
で再起動し localhost にアクセスすると認証ページに移動することを確認します
Tips
nginx は当然アクセスできる必要があるのですが auth2-proxy にもクライアントからアクセスできる必要があります
これはリダイレクト先が auth2-proxy になっているためで auth2-proxy のリダイレクト URL にブラウザからアクセスできないと認証情報が受け取れないためです
なのでクライアントには 80 と 4180 の auth2-proxy のポートも開放する必要があります
最後に
oauth2-proxy と nginx を組み合わせてみました
認証後の情報がバックエンド側のアプリでほしい場合には nginx 側でスルーするヘッダなどを設定しましょう
0 件のコメント:
コメントを投稿