著者 : Ville Koskinen   2020年11月18日投稿のブログ記事 (元の英文記事へのリンク)

シングルサインオン(SSO)とMascot

 Mascot Server には、 Mascot Security と呼んでいるロールベースのセキュリティシステムがあります。このセキュリティシステムの使用例としては、特定のユーザーやグループに対して設定ファイルや特定のシーケンスデータベースへのアクセスを制限したり、検索するqueryのサイズや検索時間を制限したりする事例が挙げられます。

 セキュリティで実現可能な機能については、以前のブログ記事「Mascot Security:priority settings」「MascotSecurity: privacy settings」もご参照頂きたいと思います。

 Mascot Securityは、非常に高度な安全性レベルの認証を行うようには設計されてはいませんし、ハッカーが無許可でアクセスするのを防ぐように設計されているわけでもありません。セキュリティについての懸念がある場合は、Mascot サーバーをファイアウォールの保護の中に置いて守るか、認証システムを使用してMASCOT Serverへのアクセスを強力に制限することをお勧めしています。特に後者に関連して、Mascot は Microsoft Active Directory (AD) や様々なシングルサインオン (SSO) システムと統合できるのかという質問を受けることがあります。そのお答えとしては「YES」で、さらに一言付け加えるなら、認証に関連するすべての作業はウェブサーバー側が行い、Mascot 自体は認証システムとの直接的な統合はしていません。

 下図では認証の流れについて説明しています。Web ブラウザまたはサードパーティのクライアントソフトウェアは、Web サーバーに HTTP/HTTPS 要求を行います。Web サーバー (IIS または Apache) がユーザーを認証するように設定されている場合、AD のような認証システムと情報のやり取りをします。そこでの認証が成功した後、ウェブサーバーは Common Gateway Interface (CGI) を使用して要求されたマスコットプログラムやスクリプトを実行します。この時認証されたユーザーの名前は環境変数 REMOTE_USERに渡されます。スクリプトはこのユーザー名を Mascot Security ユーザデータベース (user.xml, group.xml) に照合します。照合の結果ユーザーが存在する場合、パスワードの入力を求められることなく Mascot に自動的に「ログイン」する事になります。

Ambiguous data dialog
full size リンク

 この認証を行うにあたりMascot Security側の設定として重要なのは、Mascot ユーザー名がWEBサーバーでログインする際のユーザー名と一致している事、Mascot ユーザーが Web サーバーの認証機能を使用するように設定されている事、そしてゲストアクセスの使用が無効になっている事です。具体例として、 Windows 上の IIS(Internet Information Service) で基本的なアクセス認証を設定するやり方を使ってもう少し詳しく説明します。

 ここで使用する完全なユーザー名を、COMPANY\jqpublicとします (COMPANYはドメイン名を意味します)。設定の最初のステップは、Windows の「インターネットインフォメーションサービス」にある、「基本認証」機能を有効にする *1ことです。次にIIS マネージャー*2において、ローカルサーバーの設定 (http://localhost) と認証に移動し、基本認証モジュールを有効にします*3。続いてMASCOT仮想ディレクトリの設定変更を行います。「認証」の下にある「基本認証」モジュールを有効にし、「匿名認証」を無効にします*4。また認証ドメインの設定を「COMPANY」に設定します。これらの設定に関連して、スクリーンショットを含む手順は、Microsoft Docsに詳細が記載されています。

 [訳者補足] 注釈番号が割り振られた部分の補足説明となる参考画像をPDFにまとめました(*1~*11)

 設定後、MASCOT Serverへアクセスしてください。ウェブブラウザで http://localhost/mascot を開こうとすると、アクセス時にログイン認証情報の入力を要求されます。基本認証で、ログイン時に使用するドメインとユーザー名、そしてパスワードを入力してください*5。なおブラウザを閉じて再度Mascot のフロントページを開いた時は再びログイン認証を求められます。

 Mascot 側では、Installation & Setup マニュアルの第12 章に記載されているように Mascot Security を有効にします*6(日本語資料)。セキュリティ機能が有効になっている状態で、Mascot のHomeのページから adminとしてログインします*7。この段階では、jqpublic ユーザーとして Web サーバーにログインしていると同時に、adminとして Mascot Security にログインしている状態です。MASCOTでのログイン状況は、Mascot のHomeから「Currnt session information」をクリックした時に表示されるページの内容でご確認できます*8 *9。

 セキュリティ設定のために、Home -> Configuration Editor -> Securityでセキュリティ設定画面へ移動します。ここでいくつかの設定状況を確認してください。

  • guestユーザーが無効になっている事 *10
  • ユーザーjqpublicを作成し、user typeを「User authenticated using web server」に設定
  • passwordフィールドは空のままにしておく
  • ユーザー名には、ドメイン名やバックスラッシュを含めない

設定内容は下図を参照してください。

After peak picking
full size リンク

 設定内容を保存して、マスコットのHomeの画面で、adminからログアウトします。再びHomeの画面に戻り、Homeにある”Current session information ” をクリックして表示すると、”session ID” が jqpublic_webserverauth として表示されているのが確認できます。これはMascot Security で jqpublic としてログインしていることを意味します。ユーザー名は環境変数REMOTE_USERで Web サーバーから自動的に渡され、Mascot Security で設定されたユーザー情報との結び付けに成功している事を表しています。

 WEBサーバー(例ではIIS)の基本的なアクセス認証機能は、まさに非常に基本的なもので、安全性は高くありません。しかし、Active Directory、LDAP、Kerberosなどの認証システムを統合して利用するのと同様MASCOTと統合して利用する事ができます。ユーザー認証を実行して正しいユーザー名を Mascot に渡すのは Web サーバーの役割です。安全なシングルサインオン認証のために Web サーバーを設定する方法については、一般的な IT に関する話となり、当ブログ記事の範囲外とさせてください!

 大規模なシステムでは、Mascotのユーザデータベースへのユーザー追加を自動化できると便利です。Mascot には、add_user.pl という Perl スクリプトのサンプルが、MASCOTのbinディレクトリに設置されています。デフォルトでは通常のユーザーを作成しますが、スクリプトを編集してユーザタイプをウェブ認証に変更するのは簡単です*11。

 Mascot Security の詳細については、Installation & Setup マニュアルの 12 章、またはオンライントレーニングコースのモジュール Lをご参照ください。


訳者 補足

シングルサインオンとは、複数のサービスに対して一回のログインで同時に認証を行い利用可能とする事をさします。本ブログ記事では、MASCOTセキュリティ機能とWEBサーバーの基本認証機能を同時に利用する方法をご案内いたしました。


Keywords: , ,