前回、Microsoftが提供するクラウドベースの認証サービス「Azure Active Directory(Azure AD)」を利用したユーザー認証について紹介しました。今回はAzure ADで管理されているユーザー情報を利用して、Office 365のOneDriveに保存されているドキュメントのクロールから検索するまでの方法を説明していきます。
Fessは、前回と同じバージョン 13.8.0を利用します。
プラグインのインストール
まず、Fessを起動して、OneDriveをクロールするためのプラグインをインストールします。
管理画面の左メニューで「システム」→「プラグイン」をクリックし、画面左上の「インストール」をクリックします。ここで、プルダウンメニューから「fess-ds-office365-13.8.0」を選択し、「インストール」ボタンをクリックしてプラグインをインストールしてください。
インストール後、プラグインの一覧画面を表示して「fess-ds-office365」が表示されていることを確認します。
クロール用アプリの登録
次に、クロール用のアプリをAzure ADに登録します。
Azure Portalにログインし、「Azure AD」→「アプリの登録」をクリックします。
「新規登録」をクリックして、「名前」欄にアプリの名前を入力します。ここでは、「Fess-Craw」としました。「サポートされているアカウントの種類」については以下のように設定し、「登録」ボタンをクリックします。
左側に表示されている「証明書とシークレット」→「新しいクライアントシークレット」をクリックします。「説明」欄への入力は任意ですが、今回はアプリと同じ名前を入力しておきます。有効期限を選択し、「追加」ボタンをクリックしてください。
追加されたシークレットの値をコピーしておきます。この値は再度表示されないため、別画面に遷移する前に記録しておいください。
次に「APIのアクセス許可」画面で「アクセス許可の追加」ボタンをクリックします。APIは「Microsoft Graph」を選択します。
「APIアクセス許可の要求」で「アプリケーションの許可」をクリックして、以下のAPIを検索して追加します。
- Directory.Read.All
- Files.Read.All
- Group.Read.All
- Notes.Read.All
- Sites.Read.All
- User.Read.All
クロール設定
クロール設定の前に、Azure Portalで「Azure Active Directory」の「テナントID」を確認しておきます。Azure Portalにログインして「Azure Active Directory」をクリックすると、「概要」画面が表示されます。テナント情報のなかに「テナントID」が表示されているので、これをコピーしておいてください。
次にFessの管理画面にログインし、「クローラ」→「データストア」→「新規作成」を開き、クロール設定を作成します。設定が必要な項目は以下の4つです。
- 名前
- ハンドラ
- パラメータ
- スクリプト
「名前」には任意の文字列を入力し、「ハンドラ」は「OneDriveDataStore」を選択してください。
「パラメータ」は、以下のように入力してください。
tenant=テナントID
client_id=クロール用アプリのクライアントID
client_secret=クロール用アプリのシークレットの値
「スクリプト」は、以下のように入力してください。
title=files.name
content=files.description + "\n" + files.contents
mimetype=files.mimetype
created=files.created
last_modified=files.last_modified
url=files.web_url
role=files.roles
content_length=files.size
filetype=files.filetype
timestamp=files.last_modified
取得できる値のキーと値の説明は以下の通りです。「File」はOneDriveの1ファイルを指しています。
キー | 値 |
---|---|
files.name | Fileの名前 |
files.description | Fileの説明 |
files.contents | Fileの中身(テキスト) |
files.mimetype | FileのMIMEタイプ |
files.created | Fileの作成日時 |
files.last_modified | Fileの最終編集日時 |
files.web_url | FileをWeb上で閲覧するリンク |
files.roles | Fileにアクセス可能なrole |
files.size | Fileのサイズ |
files.filetype | Fileの種類 |
クロールの実行
クロール設定ができたらクロールを実行してみましょう。
管理画面の左メニューの「システム」→「スケジューラ」で「Default Crawler」のジョブを開きます。「今すぐ開始」をクリックしてクローラを開始し、ジョブの状態が「実行中」から「有効」になるまで待ちます。
検索
検索画面には、「http://localhost:8080/sso/」でログインしてからアクセスできます。Microsoftのサインイン画面が表示されるので、Azure ADに登録されているアカウントでサインインしてください。
認証が成功すると検索画面が表示されるので、検索フォームに検索語を入れて検索してみましょう。検索結果には、ログインしているユーザーがアクセス権限を持っているドキュメントだけが表示されます。
* * *
今回は、Azure ADで管理されるユーザーの権限で、OneDrive内のファイルを検索する方法を紹介しました。Office 365内のファイル検索をする際は参考にしてみてください。
著者紹介
菅谷 信介 (Shinsuke Sugaya)
Apache PredictionIOにて、コミッター兼PMCとして活動。また、自身でもCodeLibs Projectを立ち上げ、オープンソースの全文検索サーバFessなどの開発に従事。