Fessの旧v1 APIを利用する環境向けに、ログイン必須設定とRAGチャットの利用権限をAPIの入口でも確認する改善案が出ています。対象は互換プラグインfess-webapp-v1-apiです。コアのv2 APIで行う判定に、旧APIの挙動を合わせる変更です。
初期値と利用条件
login.requiredの初期値はfalse、rag.chat.permissionsの初期値は空です。この組み合わせでは、今回のアクセス制御による挙動は変わりません。RAGチャット自体はrag.chat.enabled=falseが初期値で、利用には有効化と対応LLMの設定も必要です。
ログイン必須とチャット利用権限は管理画面の「システム」→「全般」で設定する項目です。設定値の例は次のとおりです。
login.required=true
rag.chat.permissions={group}sales,{user}taro
この例は初期値ではなく、ログインを必須にし、指定したグループまたはユーザーへチャット利用を限定するものです。既存のRAGチャット設定の記事と合わせて、旧APIを使うクライアントの認証方法も確認します。
検索APIとアクセストークン
提案ではlogin.required=trueのとき、ログインしていない呼び出しに401を返します。検索、スクロール検索、サジェスト、ラベル、人気ワードでは、登録済みで有効期限内のアクセストークンをログインの代わりに使用できます。トークンが持つ権限に応じた検索結果になるので、ログイン必須設定と文書の閲覧権限は別に確認します。
お気に入りとチャットはユーザーのログインセッションを使う機能です。ログイン必須設定が有効なとき、トークンだけではログインの代わりになりません。ヘルスチェックの/api/v1/healthはログインなしで利用できるままです。
チャットの401と403
チャットはlogin.requiredの値にかかわらず、rag.chat.permissionsの判定も行う提案です。権限のない匿名ユーザーには401、ログイン済みでも対象権限を持たないユーザーには403を返します。非ストリーミングとストリーミングの両方が対象です。
rag.chat.permissionsが空なら、この追加の利用者制限はかかりません。チャットが回答に利用できる文書の閲覧権限まで外す設定ではありません。
変更後に確認すること
旧v1 APIの互換プラグインを導入していることが前提です。変更を含む版へ更新すると、これまで成功していた匿名リクエストが401になる場合があります。検索連携は有効なトークン、ユーザー機能はログインセッションを使う構成に分けて確認します。
未ログイン、許可ユーザー、許可されていないログインユーザー、期限切れトークンの各条件で応答を確認すると、設定の意図とクライアント側の認証方法が一致しているかを判断できます。