ブログ

catch-img

NGINX Plusの機能紹介「SAML認証」

<目次>

目次[非表示]

  1. 1.はじめに
  2. 2.SAML認証とは?
  3. 3.SAML認証の仕組み
  4. 4.NGINX PlusにおけるSAML認証によるシングルサインオン
  5. 5.NGINX PlusでSAML認証を実装する方法
  6. 6.おわりに

はじめに

本ブログでは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がサポートされています。
 
認証フローは以下の通りです。

  1. ユーザがSP(NGINX Plus)にアクセス
  2. SPがSAML認証要求(SAML Authentication Request)を発行し、IdPへリダイレクト
    ※SAML認証要求により、IdP側で適切なSPから認証が開始されているかどうかを判断することができます。
  3. IdPは適切なSPから認証が開始されたと判断した後、認証画面を表示
  4. ユーザが認証情報(ログインIDやパスワード)を送信
  5. IdPが認証情報を検証し、問題がなければ認証完了
  6. IdPがSAML認証応答(SAML Authentication Response)を発行し、SPへリダイレクト
    ※SAML認証応答に含まれるSAMLアサーションより、SPはIdP側での認証可否等の情報を把握することができます。
  7. SPがSAML認証応答を検証し、問題がなければユーザのログインを許可
  8. ユーザは各種サービスへのアクセスが可能

NGINX PlusでSAML認証を実装する方法

NGINX PlusでSAML認証を実装するためには、以下の1~4の手順を実施する必要がございます。
※各種コマンドはNGINX Plusをインストールした機器で実行することを前提として、記載します。
NGINX Plusのインストールが未実施の場合は、「NGINX Plusをインストール」よりインストールを実施ください。

  1. 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

  2. NJS有効化
    nginx.confの先頭付近に以下設定を追加し、NJSモジュールを有効化してください。

    load_module modules/ngx_http_js_module.so;

  3. GitHubリポジトリのクローンを作成
    以下コマンドを実行し、GitHubリポジトリのクローンを作成してください。

    $ git clone https://github.com/nginxinc/nginx-saml

    ※取得したファイルは /root/nginx-saml ディレクトリに格納されます。
     なお、取得したすべてのファイルは /etc/nginx/conf.d にコピー可能です。

  4. お客様環境に合わせて設定を変更
    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のリプレースについてはこちらから


CONTACT

ITインフラに関してお悩みの方は
お気軽にご相談ください

ご不明な点はお気軽に
お問い合わせください。
ITインフラに関するお役立ち資料は
こちらよりダウンロードできます。

人気記事ランキング

タグ一覧