Kerberos as recommendedによって保護されるように正常に設定されたSpring MVC RESTエンドポイントがあります。認証に成功するとすべてが動作します。問題はカスタム401
エラーページになるときです。SPNEGO認証に失敗した場合のカスタムエラーページ
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return container -> container.addErrorPages(new ErrorPage(HttpStatus.UNAUTHORIZED, "/error/401.html"));
}
これは私が例えばに切り替えることにより確認することができ、うまく動作します:次のように
私は(私は春ブート1.3.5です)として、それが設定されています基本認証と間違った資格情報の提供。
ときにバックケルベロスと - 私は場所にのkinitと私のセキュアなエンドポイントにアクセスする場合、すべてが動作し、カールで、私は詳細な要求を参照してください。今、私はkdestroyを行い、カールをすれば
curl -v -u : --negotiate http://my-enpoint:8080/
> GET/HTTP/1.1
> Host: ...:8080
> User-Agent: curl/7.43.0
> Accept: */*
< HTTP/1.1 401 Unauthorized
< ...
< WWW-Authenticate: Negotiate
> GET/HTTP/1.1
> Host: ...:8080
> Authorization: Negotiate YIIH7 ...
< HTTP/1.1 200 OK
< Server: Apache-Coyote/1.1
< ...
を再び:
...それだけです。この場合、スプリングは401
としてと返され、ハンドシェイクの一部である応答が返されるため、エラーページは送信されません。
そして、ここに私の2つの質問が来:事は握手の途中で死ぬと
は、どのように私は401エラーページを返すことができますか?
は、をネゴシエートしようとしましたが、クライアントからの応答がまったくないと、フォールバック(フォーム、基本)として他の認証にフォールバックする可能性がありますか?