ロールベース検索について
Fess では任意の認証システムで認証されたユーザーの認証情報を元に検索結果を出し分けることができます。 たとえば、ロールaを持つユーザーAは検索結果にロールaの情報が表示されるが、ロールaを持たないユーザーBは検索してもそれが表示されません。 この機能を利用することで、ポータルやシングルサインオン環境でログインしているユーザーの所属する部門別や役職別などに検索を実現することができます。
Fess のロールベース検索ではロール情報を以下より取得できます。
リクエストパラメーター
リクエストヘッダー
クッキー
Fess の認証情報
ポータルやエージェント型シングルサインオンシステムでは認証時に Fess の稼働しているドメインとパスに対してクッキーで認証情報を保存することで、ロール情報を取得することができます。 また、リバースプロキシ型シングルサインオンシステムでは Fess へのアクセス時にリクエストパラメーターやリクエストヘッダーに認証情報を付加することでロール情報を取得することができます。
注釈
リクエストパラメーター・リクエストヘッダー・クッキーからのロール取得は、初期状態では無効になっています。 これらを利用する場合は、 app/WEB-INF/classes/fess.xml の roleQueryHelper コンポーネントで、参照するキー名( parameterKey 、 headerKey 、 cookieKey )や値の暗号化( encryptedParameterValue など)、区切り文字( valueSeparator 、 roleSeparator )を設定する必要があります。 初期状態で有効なのは、 Fess の認証情報を利用したロールベース検索のみです。
ロールベース検索の設定
ここでは Fess の認証情報を利用したロールベース検索の設定方法を説明します。
Fess の管理画面での設定
Fess を起動して管理者としてログインします。 ロールおよびユーザーを作成します。 たとえば、ロール管理画面で Role1 を作成し、ユーザー管理画面で Role1 に属するユーザーを作成します。 グループ単位で割り当てたい場合は、グループ管理画面でグループを作成し、ユーザーに割り当てます。
次にクロール設定において、パーミッション欄に {role}Role1 を記述して保存します。 ユーザー単位で指定する場合は {user}ユーザー名 、グループ単位で指定する場合は {group}グループ名 で記述することができます。 複数のパーミッションを指定する場合は、改行で区切って記述します。
あとはこのクロール設定でクロールすることで、指定したロール・ユーザー・グループに属するユーザーだけで検索可能なインデックスが作成されます。 ログインしたユーザーには、自分自身を表す {user}ユーザー名 、所属するロールの {role} 、所属するグループの {group} のパーミッションが自動的に付与され、ドキュメントに設定されたパーミッションと照合されます。
注釈
特定のロール・ユーザー・グループからのアクセスを明示的に拒否したい場合は、 (deny){role}Role1 のように (deny) を付けて記述します( (allow) を付けた場合は許可となり、無指定時と同じ扱いです)。
注釈
LDAP やシングルサインオンと連携している場合、ユーザーのロール・グループ情報は認証元から取得され、同様にパーミッションとして扱われます。 LDAP 連携時の動作は fess_config.properties の ldap.role.search.user.enabled 、 ldap.role.search.group.enabled 、 ldap.role.search.role.enabled (いずれも初期値は true )で制御できます。
ログイン
管理画面からログアウトします。 Role1 に属するユーザーでログインします。 ログインに成功すると検索画面のトップにリダイレクトされます。
通常通り検索すると、クロール設定で Role1 のロールが設定されたものだけが表示されます。
また、ログインしていない状態での検索は、guest ユーザーによる検索となります。 ログインしていないユーザーに対して表示したいドキュメントには、クロール設定のパーミッション欄に {role}guest を設定してください(初期値は role.search.guest.permissions で定義されています)。
ログアウト
管理者以外のユーザーでログインした状態で検索画面でログアウトを選択することでログアウトされます。