FessのWeb認証でホスト・NTLM設定と401応答を確認する

認証が必要なWebサイトをFessでクロールするときは、ユーザー名とパスワードだけでなく、資格情報を適用する範囲を確認する必要があります。15.9開発版に向けた文書整備と、NTLMのワークステーション名・401応答の記録に関する変更を紹介します。

2026年10月15日確認時点では関連する4件のPRはすべてマージ済みです。

資格情報を適用する範囲

管理画面のWeb認証設定には、先に登録したWebクロール設定を指定します。

項目空欄の場合・利用条件
ホスト名選択したクロール設定内の任意のホストに適用。リンクやリダイレクトでたどる別ホストも対象になり得るため、対象ホストを指定する
ポート任意のポートに適用。-1ではなく空欄を使う
レルム任意のレルムに適用。BASIC/DIGESTで指定する場合は大文字小文字も一致させる。NTLMでは使われない

スキーム欄はサーバーが要求する方式を強制する設定ではありません。たとえばDIGESTで登録しても、サーバーがBASICを要求すればBASICで応答します。サーバーの実際の方式に合わせ、HTTPSで利用してください。NTLMとBASIC/DIGESTの資格情報は互いに代わりにはなりません。

NTLMのドメインとworkstation

ユーザー名にはユーザー部分を入力し、パラメーター欄に次のように記述します。

domain=EXAMPLE
workstation=FESSCRAWLER

DOMAIN\userをユーザー名欄に入れても、自動的にドメインとユーザーへ分割されません。domainを省略すると空ドメインになり、指定値は大文字に変換して送信されます。

workstationを省略した場合はFess実行ホストの名前が使われます。PR #221は、明示したworkstationがHttpClient 5に無視され、ローカルホスト名になる問題を修正します。修正を含むクローラーで、NTLM Type 3メッセージに設定値が反映されます。Type 1へworkstationを追加する変更ではありません。

401を障害URLで確認する

PR #3651は、同梱設定の初期値を404,403,410から404,403,410,401へ変更します。資格情報の不一致や更新後の認証失敗を、障害URLとして確認しやすくします。

既存環境でこのプロパティを設定している場合は、自動的に書き換わりません。401を記録する運用を選ぶ場合は、既存のコードを残して設定を見直してください。

crawler.failure.url.status.codes=404,403,410,401

401が返っても、すでにインデックスにある文書は削除されません。障害URLによる後続クロールの除外はfailure.count.thresholdに依存し、初期値の-1では無効です。閾値を設定している環境では、認証情報の訂正だけで再クロールできるとは限りません。認証を要求するページへのリンクがある公開サイトでも401の記録が増える可能性があります。

関連PR

Fessのキャッシュ表示で相対URLの画像とリンクを解決する

FessのbootstrapテーマでキャッシュしたHTMLを表示すると、相対URLの画像やリンクが元サイトへ解決されない問題を修正しました。キャッシュ表示の中でURLを元ページのアドレスに基づいて変換し、画像などの参照先を正しく組み立てます。

base要素が効かない理由

キャッシュビューアーはHTMLをsandbox付きのBlobフレームへ入れます。その文書に親ページのContent-Security-Policyが引き継がれ、base-uri 'self'によって元ページを指定するbase要素が無視されていました。ブラウザのコンソールにbase-uriの違反が出て、画像やリンクの相対アドレスがBlobを基準に扱われます。

今回の修正ではbase要素を取り除き、HTMLのhref、src、srcset、ポスター画像、背景画像などの参照を、APIが返した元ページURLで解決してから表示します。たとえば元ページがhttps://example.com/docs/page.htmlなら、img/photo.pngはhttps://example.com/docs/img/photo.pngになります。

利用条件と初期値

新しい切り替え設定はありません。修正を含むbootstrapテーマと、元ページURLを持つHTMLキャッシュが必要です。別配布のテーマや独自テーマは、そのテーマに対応する修正を確認してください。

本体の文書キャッシュ設定はcrawler.document.cache.enabled=true、対応MIMEタイプはcrawler.document.cache.supported.mimetypes=text/htmlが初期値です。最大サイズの初期値はcrawler.document.cache.max.size=2621440バイトです。実際に対象文書のキャッシュが保存されている必要があり、設定を有効にするだけで過去の文書へ本文が追加されるわけではありません。

元URLを返す既存HTMLキャッシュのURL解決だけなら再クロールで作り直す処理ではありません。修正版でキャッシュ画面を再読み込みし、元サイトにある画像が取得できるか確認します。

元ページと同じ表示にはならない

CSPやフレームのsandbox制限は維持します。元サイトの外部スタイルシート、フォント、メディア、object、埋め込みフレームは引き続き拒否されることがあります。画像や背景画像のURL解決が改善されても、元ページのデザインや動画をそのまま再現する機能ではありません。

フレーム内の通常リンクは、遷移先がframe-src blob:に合わず拒否される場合があります。target="_blank"のリンクは元URLを別タブで開けます。元URLがない場合は変換せず、ページ内アンカーや既に絶対URLの参照も維持します。

WebKitでBlob自体が空になる問題を扱うtheme.index.frame.ancestorsとは原因が異なります。今回の相対URL修正のためにCSPを緩める設定は必要ありません。修正PRのブラウザ確認はChromiumとFirefoxで行われています。

関連PR

Fessのテーマを名前とバージョンの選択でインストールする

Fessのテーマ管理画面で、テーマ名とバージョンをドロップダウンから選んでインストールする変更がマージされました。自由入力した名前の誤りを、ダウンロード失敗まで気付けない状況を減らす改善です。

インストールの流れ

  1. 管理画面のテーマ管理ページ(/admin/theme/)を開きます。
  2. インストールするテーマ名を選択し、「選択」を押します。
  3. 選んだテーマのバージョン一覧から目的の版を選び、「インストール」を押します。

テーマ名の選択で一度画面が遷移します。続くバージョン一覧は新しい順に並びますが、初期選択は最新の安定版です。たとえば1.1.0-rc1と1.0.0がある場合、初期選択は1.0.0です。安定版が一つもない場合だけ、最新のプレリリースが選ばれます。新しい候補が先頭にあることと、初期選択されることは同じではありません。

インストールされたテーマを実際に使用する際は、利用中のFessやテーマの対応条件を確認し、既存の既定テーマ設定も確認します。今回の変更だけでテーマのインストールと既定テーマの変更が同じ操作になるわけではありません。

候補が表示されない場合

テーマリポジトリーを読み取れない場合や、インストール可能なテーマが公開されていない場合は、候補がない旨とZIPアップロードの案内が表示されます。通信・リポジトリー設定を確認するか、対応するテーマZIPを用意してアップロードしてください。

カタログに存在しないテーマ名を指定しても、バージョン選択には進まず最初の選択画面になります。インストールに失敗した場合もテーマの選択からやり直します。今回の変更は管理画面の入力方法が中心で、管理APIやプラグイン管理画面の操作方法は変更されていません。

関連PR