はじめに
前回のモバイル編では、Fessを用いてどのように携帯端末向け検索システムを構築するかをご紹介しました。本記事ではFessの特徴的な機能の一つでもあるロールベース検索機能についてご紹介します。
本記事ではFess 4.0.0 betaを利用して説明します。Fessの構築方法については導入編を参照してください。
対象読者
- ポータルサイトなどの認証があるシステムで検索システムを構築してみたい方
- 閲覧権限ごとに検索する環境を構築したい方
必要な環境
この記事の内容に関しては次の環境で、動作確認を行っています。
- CentOS 5.5
- JDK 1.6.0_22
ロールベース検索
Fessのロールベース検索とは、任意の認証システムで認証されたユーザーの認証情報を元に検索結果を出し分ける機能です。 例えば、営業部ロールを持つ営業担当者Aは検索結果に営業部ロールの情報が表示されるが、営業部ロールを持たない技術担当者Bは検索してもそれが表示されません。 この機能を利用することで、ポータルやシングルサインオン環境でログインしているユーザーの所属する部門別や役職別などに検索を実現することができます。
Fessのロールベース検索ではロール情報を以下の場所から取得できます。
- リクエストパラメータ
- リクエストヘッダー
- クッキー
- J2EEの認証情報
利用方法としては、ポータルサーバーやエージェント型シングルサインオンシステムでは認証時にFessの稼働しているドメインとパスに対してクッキーで認証情報を保存することで、ロール情報をFessに渡すことができます。
また、リバースプロキシ型シングルサインオンシステムではFessへのアクセス時にリクエストパラメータやリクエストヘッダーに認証情報を付加することで、Fessでロール情報を取得することができます。
このようにさまざまな認証システムと連携することで、ユーザーごとに検索結果を出し分けることができます。
独自の認証システムを運用しているような場合は、jp.sf.fess.helper.RoleQueryHelperインターフェイスを実装してクラスを用意することで対応することができます。作成したクラスは「webapps/fess/WEB-INF/classes
」などのクラスパスが通っている場所に配置して、「webapps/fess/WEB-INF/classes/app.dicon
」でjp.sf.fess.helper.impl.RoleQueryHelperImplに代わって指定します。