#spring #spring-boot #spring-security #spring-security-oauth2
Вопрос:
У меня есть некоторый фильтр, который возвращает 401, когда в запросе присутствует какой-то заголовок.
мой фильтр-это:
@Component
@Order(1)
public class BlockHeaderFilter implements Filter {
private static final AuthenticationEntryPoint authenticationEntryPoint = new OAuth2AuthenticationEntryPoint();
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
...
if (headerExist) {
Exception failed = new Exception("Unauthorized request. x-private header is forbidden");
authenticationEntryPoint.commence(
httpServletRequest,
httpServletResponse,
new InsufficientAuthenticationException(failed.getMessage(), failed)
);
}
...
}
}
Это работает нормально, но с весны 5, похоже, точка OAuth2AuthenticationEntryPoint устарела.
‘org.springframework.безопасность.oauth2.поставщик.ошибка.OAuth2AuthenticationEntryPoint’ устарел
/**
* If authentication fails and the caller has asked for a specific content type response, this entry point can send one,
* along with a standard 401 status. Add to the Spring Security configuration as an {@link AuthenticationEntryPoint} in
* the usual way.
*
* <p>
* @deprecated See the <a href="https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Migration-Guide">OAuth 2.0 Migration Guide</a> for Spring Security 5.
*
* @author Dave Syer
*
*/
@Deprecated
public class OAuth2AuthenticationEntryPoint extends AbstractOAuth2SecurityExceptionHandler implements
AuthenticationEntryPoint {
...
}
Просматривая руководство по миграции (https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Migration-Guide) или где-либо еще, я не могу найти современный шаблон для той же задачи.
Кто-нибудь знает, что заменяло OAuth2AuthenticationEntryPoint?
Спасибо!
Комментарии:
1.то, что вы ищете, вероятно,
BearerTokenAuthenticationEntryPoint
docs.spring.io/spring-security/site/docs/current/api/org/…2. @Toerktumlare Отлично! Спасибо!
Ответ №1:
AuthenticationEntryPoint
представляет собой пружинный интерфейс.
И если вы посмотрите в api, вы увидите, что под всеми известными классами реализации вы можете найти реализацию BearerTokenAuthenticationEndpoint
Baerer token
является более нейтральным, чем написание oauth2
, поскольку существуют другие стандарты аутентификации, которые также используют токены.