BASIC認証配下にFessを設置するとサジェストが機能しない

いつもお世話になっております。

サイト全体にBASIC認証をかけているのですが、そのサイト内にFESSを
設置しました。BASIC認証を通過して検索ページを開き、検索窓にキーワ
ードを入力しようとするとBASIC認証のボックスが表示されてキーワード
が入力できません。
#サジェストの機能が動いてサーバにリクエストするもHTTP401が返され
#てます

ちなみにFESSの前段ではApacheが動いており、Apacheで認証を行いProxyPassでFESS(localhost:8080)にリクエストを転送しております。

そもそも論として、こう言った使い方はしてはならないと言うことでしょうか?
識者の方、ご教示頂ければ幸いです。

どうぞよろしくお願い申し上げます。

その状況は、ブラウザとApacheの部分の話なので、BASIC認証したFessへのアクセスしているURLとサジェストへのURLが異なったりしているのではないでしょうか。

お忙しいところ返信ありがとうございます。

Apacheではfessを設置したURLを以下のように定義しております。

<Location /fess>
    Authtype Basic
    AuthName "Input Your Touroku Bango in User Name Area"
    AuthUserFile /var/home/ap/apache/pass/.htpasswd
    Require valid-user

    ProxyPass  http://localhost:8080/fess
    ProxyPassReverse http://localhost:8080/fess
</Location>

以下、ログになります。

↓初回BASIC認証通し・検索ページアクセス時
172.27.80.1 - - [24/Mar/2022:22:08:41 +0900] “GET /fess/ HTTP/1.1” 401 381
172.27.80.1 - tsuka [24/Mar/2022:22:08:51 +0900] “GET /fess/ HTTP/1.1” 200 8583
↑初回BASIC認証通し・検索ページアクセス時

↓検索窓にキーワードを入れたときのログ
172.27.80.1 - tsuka [24/Mar/2022:22:09:06 +0900] “GET /fess/suggest?query=%EF%BD%93&fields=default%2Ccontent%2Ctitle&num=20&=1648127332790 HTTP/1.1” 401 93
172.27.80.1 - - [24/Mar/2022:22:09:06 +0900] “GET /fess/suggest?query=%E3%81%9D%E3%81%86&fields=default%2Ccontent%2Ctitle&num=20&=1648127332791 HTTP/1.1” 401 381
↑検索窓にキーワードを入れたときのログ

一応URLは一致していると思うのですが、FESSのコンテキストパスを変更
したりしたのが影響しているのでしょうか?

どうぞよろしくお願い申し上げます。

URLが問題ないようであれば、ブラウザが送っているリクエストヘッダーとかを確認して、問題を切り分けていく感じかなと思います。

お世話になります。

検索結果に表示される検索窓にキーワードを入力した時のリクエストとレスポンスを添付させて頂きます。これで何かわかりますでしょうか?
よろしくお願い致します。


Authorizationヘッダーがついているようなので、BASIC認証が成功しているアクセスと比較してみたり、Apacheのログなどを見てみるとかが良いように思います。

お世話になります。

パッと見た感じでは、Apacheをスルーして、Authorizationヘッダーを受け取ったFessがAuthorizationヘッダーを理解できないとのメッセージを返しているように見えるのですが、その点いかがでしょうか?

以上、よろしくお願い致します。

Hostヘッダー的にはApacheがスルーされていないようなので、ApacheのログやFessもデバッグログにすれば、リクエストの状況は確認できるので、そのあたりを確認すれば良いと思います。

Fessのログをデバッグログにしたところ、以下のログが出力されておりました。
やはりAuthorizationヘッダーをFessの方でハンドリングする事に失敗しているようです。
どうすればよろしいでしょうか?

2022-03-29 11:13:26,943 [http-nio-8080-exec-8] DEBUG Failed to process a suggest request.
org.codelibs.fess.exception.InvalidAccessTokenException: Invalid format: Basic dHN1a2E6dHN1a2E=
	at org.codelibs.fess.helper.AccessTokenHelper.getAccessTokenFromRequest(AccessTokenHelper.java:46) ~[classes/:?]
	at org.codelibs.fess.app.service.AccessTokenService.getPermissions(AccessTokenService.java:95) ~[classes/:?]
	at org.codelibs.fess.helper.RoleQueryHelper.processAccessToken(RoleQueryHelper.java:167) ~[classes/:?]
	at org.codelibs.fess.helper.RoleQueryHelper.build(RoleQueryHelper.java:127) ~[classes/:?]
	at org.codelibs.fess.api.suggest.SuggestApiManager.process(SuggestApiManager.java:96) [classes/:?]
	at org.codelibs.fess.filter.WebApiFilter.doFilter(WebApiFilter.java:53) [classes/:?]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) [classes/:?]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) [classes/:?]
	at org.codelibs.fess.filter.CorsFilter.doFilter(CorsFilter.java:58) [classes/:?]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) [classes/:?]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) [classes/:?]
	at org.lastaflute.web.servlet.filter.LastaPrepareFilter.toNextFilter(LastaPrepareFilter.java:280) [lastaflute-1.2.3.jar:?]
	at org.lastaflute.web.servlet.filter.LastaPrepareFilter.viaHotdeploy(LastaPrepareFilter.java:243) [lastaflute-1.2.3.jar:?]
	at org.lastaflute.web.servlet.filter.LastaPrepareFilter.viaLastaDiContext(LastaPrepareFilter.java:230) [lastaflute-1.2.3.jar:?]
	at org.lastaflute.web.servlet.filter.LastaPrepareFilter.doFilter(LastaPrepareFilter.java:203) [lastaflute-1.2.3.jar:?]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) [classes/:?]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) [classes/:?]
	at org.codelibs.fess.filter.EncodingFilter.doFilter(EncodingFilter.java:118) [classes/:?]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) [classes/:?]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) [classes/:?]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) [classes/:?]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) [classes/:?]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540) [classes/:?]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) [classes/:?]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [classes/:?]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) [classes/:?]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359) [classes/:?]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) [classes/:?]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [classes/:?]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889) [classes/:?]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1735) [classes/:?]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [classes/:?]
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) [classes/:?]
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) [classes/:?]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [classes/:?]
	at java.lang.Thread.run(Thread.java:833) [?:?]

ありがとうございます。
なるほど、そこに引っかかるのですね。
RequestHeader unset Authorization を追加してみるとかではないでしょうか。

無事現象を解消することができました。
ありがとうございました。