NGINX Plusの機能紹介「SAML認証」
<目次>
目次[非表示]
はじめに
本ブログではNGINX Plusを用いて実装するSAML認証機能についてご紹介します。
NGINX / NGINX Plusの概要につきましては、前回公開されたブログ(「NGINXとは? ~多様な用途に活用できるソフトウェアWebサーバ~」)で紹介しているので、ご覧ください。
SAML認証とは?
SAML(Security Assertion Markup Language)とは標準化団体のOASIS(Organization for the Advancement of Structured Information Standards)によって策定された認証方式であり、シングルサインオンに使用されます。
シングルサインオンとは、一度のログインで、複数のサービスへログインできるようになる仕組みのことです。
SAML認証を利用することで、ユーザの認証情報(ユーザIDやパスワード等)や属性情報(役職や部署等)を検証し、シングルサインオンの実現及び、属性情報によるアクセス制御が可能となります。これは、GoogleアカウントやYahooアカウントの認証情報を利用して、ログインするようなWebサービスでも実装されている技術となります。
SAML認証の仕組み
SAML認証では、ユーザ認証を行うIdP(Identity Provider) と 認証されたユーザにアプリケーションサービスやクラウドサービスへのアクセスを提供するSP(Service Provider)を利用します。
IdPとSP間では、ユーザの認証情報や属性情報等を記載したSAMLアサーションをやり取りし、シングルサインオンを実現しています。
また、認証方式は、認証開始をSP起点とする「SP Initiated」と、認証開始をIdP起点とする「IdP Initiated」の2つがあり、NGINX PlusではSP Initiatedがサポートされています。
認証フローに関しては、次の項目「NGINX PlusにおけるSAML認証によるシングルサインオン」をご確認ください。
NGINX PlusにおけるSAML認証によるシングルサインオン
NGINX PlusはSPとして利用することが可能です。
また、前項の通り、NGINX Plusでは認証開始をSP起点とするSP Initiatedがサポートされています。
認証フローは以下の通りです。
- ユーザがSP(NGINX Plus)にアクセス
- SPがSAML認証要求(SAML Authentication Request)を発行し、IdPへリダイレクト
※SAML認証要求により、IdP側で適切なSPから認証が開始されているかどうかを判断することができます。 - IdPは適切なSPから認証が開始されたと判断した後、認証画面を表示
- ユーザが認証情報(ログインIDやパスワード)を送信
- IdPが認証情報を検証し、問題がなければ認証完了
- IdPがSAML認証応答(SAML Authentication Response)を発行し、SPへリダイレクト
※SAML認証応答に含まれるSAMLアサーションより、SPはIdP側での認証可否等の情報を把握することができます。 - SPがSAML認証応答を検証し、問題がなければユーザのログインを許可
- ユーザは各種サービスへのアクセスが可能
NGINX PlusでSAML認証を実装する方法
NGINX PlusでSAML認証を実装するためには、以下の1~4の手順を実施する必要がございます。
※各種コマンドはNGINX Plusをインストールした機器で実行することを前提として、記載します。
NGINX Plusのインストールが未実施の場合は、「NGINX Plusをインストール」よりインストールを実施ください。
- NJSインストール
NGINX Plus(SP)とIdP間の処理にNJS(NGINX JavaScript module)が必要です。
お客様環境に合わせて、以下コマンド等を利用し、NJSモジュールをインストールしてください。
・Debian/Ubuntu
$ sudo apt install nginx-plus-module-njs
・CentOS/RHEL
$ sudo yum install nginx-plus-module-njs
- NJS有効化
nginx.confの先頭付近に以下設定を追加し、NJSモジュールを有効化してください。
load_module modules/ngx_http_js_module.so;
- GitHubリポジトリのクローンを作成
以下コマンドを実行し、GitHubリポジトリのクローンを作成してください。
$ git clone https://github.com/nginxinc/nginx-saml
※取得したファイルは /root/nginx-saml ディレクトリに格納されます。
なお、取得したすべてのファイルは /etc/nginx/conf.d にコピー可能です。
- お客様環境に合わせて設定を変更
GitHubより取得した各種設定ファイルをIdPの設定と一致するように必要に応じて変更してください。
以下がNGINX Plus SAMLで使用される設定ファイルです。
・saml_sp_configuration.conf
・frontend.conf
・saml_sp.server_conf
・saml_sp.js
詳細は以下リンクよりご覧ください。
https://github.com/nginxinc/nginx-saml#configuring-nginx-plus
おわりに
今回はNGINX Plusで利用できる機能のうち、SAML認証をご紹介しました。
SAML認証において、NGINX PlusはSPとして利用することが可能であり、認証開始をSP起点とするSP Initiatedをサポートしている点をご理解頂けますと幸いです。
NGINX PlusにおけるSAML認証の詳細については、以下リンクよりご覧ください。
https://github.com/nginxinc/nginx-saml
NGINXにご興味ございましたら、以下よりお気軽にお問い合わせください。
「テクマトリックス NGINX紹介ページ」
また、同ページにて「NGINX」に関する動画も公開しておりますので、ぜひご覧ください。
BIG-IPのリプレースについてはこちらから