クラウドセキュリティネットワーク
NGINX PlusとOktaの認証連携
NGINX PlusはOktaと連携して認証プロキシができるか?と問い合わせをいただきましたので動作確認をしてみました
はじめに
ブログの閲覧ありがとうございます。
東京エレクトロンデバイスのJo Nishikawaです。
お客様から「NGINX Plusによってプロキシされるアプリケーションに対して、Oktaの認証と連携してSSO(シングルサインオン)が実現できるか」という問い合わせを受けました。
確認したところ、NGINX PlusとOktaの連携方法がNGINX Docs内のページに記載がありました。
早速、いつものようにAWS上で動作確認をすることにしました。
検証環境
準備したものは以下です。
- NGINX Plus 1インスタンス(プロキシサーバー)
- NGINX 1インスタンス(アプリケーションサーバー、※構築済み)
- Oktaのフリートライアル環境
※Oktaのトライアルライセンスはこちらから発行が可能です
作成した検証構成図が以下の画像です。
動作確認したいこと
- Oktaで登録したユーザーでNGINX Plusがプロキシしたアプリケーションにログインできること
検証
- F5社のページを参考に検証を実施
STEP1:NGINX Plus と NGINX JavaScript (NJS)モジュールをサーバーにインストール
- AWSのEC2でインスタンスをデプロイする
- EC2インスタンスでデプロイしたサーバーにNGINX Plusをインストールする (こちらのページをご参照ください)
- NJSモジュールをインストールする
$ sudo apt install nginx-plus-module-njs
- /etc/nginx/nginx.conf に NJSモジュールをロードするように以下を追記
load_module modules/ngx_http_js_module.so;
STEP2:Oktaの準備
- 各項目を以下のように選択および、入力しSaveボタンで設定保存を実施
- 作成したApplication情報からClient IDとCLIENT SECRETSの値を取得し、控えておく
STEP3:NGINX Plusのセットアップを実施
- NGINX OpenID ConnectをGithubからダウンロード
$ sudo git clone https://github.com/nginxinc/nginx-openid-connect.git
- Githubからダウンロードした以下の4ファイルを /etc/nginx/conf.d 配下に移動する
frontend.conf
openid_connect.js
openid_connect.server_conf
openid_connect_configuration.conf
- curlコマンドでOkta構成から認証エンドポイント、トークンエンドポイント、JSON Web キー (JWK) ファイルの URL を取得
※jqコマンドをインストールされていない場合はインストールする必要があります
$ curl https://trial-xxxxxxx.okta.com/.well-known/openid-configuration | jq
必要な情報以外も出力されますが以下の部分が後の作業で必要になるので控えておく
- 取得した値、及び変更が必要な箇所を/etc/nginx/conf.d/openid_connect_configuration.conf ファイルに加筆・変更を実施
- /etc/nginx/conf.d/frontend.conf にて変更を実施する
下記のディレクティブをコメントアウト、または削除する
auth_jwt_key_file $oidc_jwt_keyfile; # Enable when using filename
STEP4:テスト
- アプリケーションサーバーへアクセスを実施
クライアント端末のブラウザから http://<NGINX Plusで待ち受けるIPアドレス>:8010 へアクセスが実施できることを確認
- ログインに成功した後にアプリケーションサーバーがコンテンツを返すことを確認
まとめ
F5社のドキュメントの通り、NGINX PlusとOktaを連携させて認証をプロキシすることができました。
NGINX Plusは様々な機能をもっていますが、それぞれの機能が高水準であるため、今回のように認証プロキシサーバーとして限定的に使うことも有効だと感じました。
もちろん、配下のアプリケーションサーバーが複数であればバランシングしたり、WAFも導入したりもオススメです!
また、Oktaに関しても当社で取り扱っております。
ご要望などございましたら、Oktaに関してもお問い合わせいただけますので是非よろしくお願いいたします。
機能検証は引き続き実施していきますので、また別の記事でお会いしましょう!