Fessはさまざまな認証方法に対応しています。その中から今回は、「OpenID Connect」を利用して、GoogleアカウントをFessで認証する方法を説明します。
解説にあたり、今回はFess 13.10.2を利用します。事前に公式サイトのダウンロードページからZIPファイルを入手し、インストールガイドを参考にFessとElasticsearchをインストールしておいてください。
Google Cloud Platformでの設定
GoogleのOAuth 2.0 APIは認可と認証をサポートしているので、OAuth 2.0の認証情報を作成し、OpenID Connectとして連携します。
まず、Google Cloud Platformで認証情報を作成します。Google Cloud Platformにアクセスし、認証情報を作成するプロジェクトを選択してください
左上のナビゲーションメニューから「APIとサービス」→「認証情報」をクリックします。
同意画面の作成
認証情報画面で以下の表示があった場合は、「同意画面を構成」ボタンをクリックして、公開範囲などを設定します。
「同意画面を構成」ボタンをクリックすると、「OAuth同意画面」が表示されるので、「User Type」のラジオボタンで公開範囲を指定して「作成」ボタンをクリックします。今回、ここでは「内部」を指定しました。
次に表示される「アプリ情報」では、任意のアプリケーション名を入力します。ここでは「Fess」と入力し、その他の項目については必須項目だけを入力しています。入力後、「保存して次へ」ボタンをクリックします。
スコープの設定では何も設定せず、「保存して次へ」ボタンをクリックしてください。設定の概要を確認後、ダッシュボードに戻ります。
認証情報の作成
同意画面の作成後、左上のナビゲーションメニューから「APIとサービス」→「認証情報」をクリックして認証情報画面を表示します。「認証情報を作成」をクリックして、「OAuth クライアント ID」を選択します。
OAuthクライアントIDの作成画面で、以下を入力して、「作成」ボタンをクリックします。
項目 | 設定内容 |
---|---|
アプリケーションの種類 | ウェブアプリケーション |
名前 | Fess(任意) |
承認済みのリダイレクトURI | http://localhost:8080/sso/ |
OAuthクライアントIDが作成されると、「クライアントID」と「クライアントシークレット」が表示されるので、記録しておきます。
Fessの設定
作成した認証情報をFessに設定します。
app/WEB-INF/conf/system.propertiesに、以下の行を追加して保存します。「クライアントID」と「クライアントシークレット」の値は、OAuthクライアントIDの作成で生成されたものを設定します。
sso.type=oic
oic.client.id=[クライアントID]
oic.client.secret=[クライアントシークレット]
oic.auth.server.url=https://accounts.google.com/o/oauth2/auth
oic.redirect.url=http://localhost:8080/sso/
oic.scope=openid email
oic.token.server.url=https://accounts.google.com/o/oauth2/token
設定後、Fessを起動します。
Fessへのアクセス
「http://localhost:8080/sso/」で検索画面にアクセスします。なお、このURLと承認済みのリダイレクトURIが一致していないと、エラー画面が表示されるので注意してください。
アクセスに成功すると、Googleアカウントのログイン画面が表示されるので、利用するアカウントでログインします。
パスワード入力後、検索画面の右上にサインインした際のアドレスが表示されていれば認証成功です。
今回のGoogleアカウント連携を利用して、Google Driveをクロールすることも可能です。設定は、本連載の第18回を参考にしてください。
* * *
今回はGoogleのOAuth 2.0 APIを利用して、FessとGoogleアカウントを連携する方法を紹介しました。Googleアカウントに限らず、OpenID Connectで提供される認証システムであれば、今回と同様の方法で連携することができます。OpenID Connectを利用して認証情報を連携する際は、参考にしてみてください。
著者紹介
菅谷 信介 (Shinsuke Sugaya)
Apache PredictionIOにて、コミッター兼PMCとして活動。また、自身でもCodeLibs Projectを立ち上げ、オープンソースの全文検索サーバFessなどの開発に従事。