Почему BasicAuthenticationEntryPoint фиксирует ответ? - PullRequest
0 голосов
/ 31 января 2020

Мое приложение поддерживает несколько методов безопасности. Он отправляет несколько WWW-Authenticate заголовков с проблемами. Ответ должен выглядеть следующим образом:

WWW-Authenticate: Basic realm="MyApp"
WWW-Authenticate: Bearer realm="MyApp"
WWW-Authenticate: OtherAuthMethod

Проблема в том, что BasicAuthenticationEntryPoint фиксирует ответ, и после этого никакие другие заголовки не добавляются:

response.addHeader("WWW-Authenticate", "Basic realm=\"" + realmName + "\"");
// this closes the response:
response.sendError(HttpStatus.UNAUTHORIZED.value(), HttpStatus.UNAUTHORIZED.getReasonPhrase());

Есть два обходных пути Я думал о:

  1. Измените порядок так, чтобы точка входа Basi c стала последней.
  2. Исправьте код.

Это работает:

class MyBasicAuthenticationEntryPoint extends BasicAuthenticationEntryPoint {
    @Override
    public void commence(HttpServletRequest request, HttpServletResponse response,
                         AuthenticationException authException) {    
        response.addHeader(HttpHeaders.WWW_AUTHENTICATE, "Basic realm=\"" + getRealmName() + "\"");
        response.setStatus(HttpStatus.UNAUTHORIZED.value());
    }
}

Приведенный выше код является то, что, например, BearerTokenAuthenticationEntryPoint, нет коммитов, как в BasicAuthenticationEntryPoint.

Какой смысл? Я что-то пропустил? Есть ли лучшее решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...