今回は、Microsoftが提供するクラウドベースの認証サービス「Azure Active Directory(Azure AD)」を使ったユーザー認証について紹介します。Azure ADで管理されているユーザーをFessにログインさせてみましょう。

解説にあたっては、Azure ADとFess 13.8.0を利用するので、事前に環境をご用意ください。FessのZIPファイルは公式サイトから入手できます。インストールガイドを参考に、FessとElasticsearchをインストールしておいてください。

認証用アプリの登録

まず、Azure Portalで、認証用のアプリを登録します。Azure Portalにログインして「Azure AD」→「アプリの登録」をクリックします。

アプリの登録

アプリの登録

「新規登録」をクリックしたら「名前」「リダイレクト URI」を入力して「登録」をクリックします。

新規登録

新規登録

左側に表示されている「証明書とシークレット」→「新しいクライアントシークレット」をクリックします。「説明」テキストボックスへの入力は任意ですが、ここではアプリと同じ名前を入れておきます。「有効期限」ラジオボタンは「なし」を選択して「追加」をクリックします。

新しいクライアントシークレットの登録

新しいクライアントシークレットの登録

追加された行の値をコピーしておきます。このキーの値は再度表示されないため、別画面に遷移する前に記録しておいてください。

クライアントシークレットの値

クライアントシークレットの値

次に「APIのアクセス許可」の画面で「アクセス許可の追加」をクリックします。

APIのアクセス許可

APIのアクセス許可

APIには「Microsoft Graph」を選択します。

MicrosoftGraph

「MicrosoftGraph」を選択

「APIアクセス許可の要求」で「アプリケーションの許可」をクリックして、以下のAPIを検索し、追加します。

  • Directory.AccessAsUser.All
  • Directory.Read.All

認証設定

続いて、Fessで認証設定を行います。

「app/WEB-INF/conf/system.properties」を開いて、今回は以下の内容を追加して保存します。

aad.tenant=[テナント名].onmicrosoft.com
aad.client.id=認証用アプリのクライアントID
aad.client.secret=認証用アプリのクライアントシークレットの値
aad.reply.url=http://localhost:8080/sso/
sso.type=aad

Fessへのアクセス

「http://localhost:8080/sso/」で検索画面にアクセスします。Microsoftのサインイン画面が表示されるので、Azure ADに登録されているアカウントでサインインします。

サインイン

サインイン

検索画面の右上にサインインした際のアドレスが表示されていれば、認証成功です。

検索画面

検索画面

* * *

今回は、Azure ADで管理されているユーザーをFessで認証する方法について紹介しました。全般の設定で、ログインを必須にすることにより、Fessにアクセスすると自動でログインできるようになるので、シングルサインオン環境を実現することもできます。

著者紹介

菅谷 信介 (Shinsuke Sugaya)

Apache PredictionIOにて、コミッター兼PMCとして活動。また、自身でもCodeLibs Projectを立ち上げ、オープンソースの全文検索サーバFessなどの開発に従事。