Skip to content

no-task: заменил basic auth на кастомную схему - #1

Open
dmitry-sviridov wants to merge 1 commit into
alex-kosarev:masterfrom
dmitry-sviridov:experimental-no-basic-auth
Open

no-task: заменил basic auth на кастомную схему#1
dmitry-sviridov wants to merge 1 commit into
alex-kosarev:masterfrom
dmitry-sviridov:experimental-no-basic-auth

Conversation

@dmitry-sviridov

Copy link
Copy Markdown

Решил попробовать изменить basic аутентификацию на "более привычную" через post запрос с jsonbody с минимальным конфигурированием. для обеспечения "правильности" клиентов предусмотрен специальный хедер, который будут отправлять только нативные клиенты, например.

насколько такой подход имеет право на жизнь?)


chain.doFilter(request, response);
}
chain.doFilter(request, response);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

chain.doFilter(request, response); в случае успеха вызывается дважды, может быть источником трудноуловимых багов

} catch (AuthenticationException var8) {
this.securityContextHolderStrategy.clearContext();
this.logger.debug("Failed to process authentication request", var8);
response.sendError(HttpServletResponse.SC_FORBIDDEN);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

вместо отправки ошибки лучше пользоваться AuthenticationEntryPoint, это более универсальный и гибкий способ


import java.io.IOException;

public class RequestLoginPasswordFilter extends OncePerRequestFilter {

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вместо своего фильтра можно использовать AuthenticationFilter, а логику получения аутентификационных данных реализовать в классе, реализующем AuthenticationConverter

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

о, спасибо за замечание)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Честно говоря, попробовал - не получилось.
builder .addFilterAfter(requestJwtTokensFilter, ExceptionTranslationFilter.class) .addFilterAfter(authenticationFilter, ExceptionTranslationFilter.class)
менял местами эти две строчки (authenticationFilter - это созданный с кастомным конвертером) - все равно в дебаггере вижу что он пытается провести конвертацию через Jwt конвертер.

Плюс, конструктор принимающий менеджер аутентификации и конвертер не дает конфигурировать путь, по которому он должен отрабатывать. Короче какая-то беда. Хотя идея переиспользовать по максимуму спринговый функционал мне нравится.

if (this.requestMatcher.matches(request)) {
try {
var isNative = checkNativeHeader(request);
if (!isNative) {

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не совсем понятно - а зачем?) Кто угодно может добавить заголовок X-native в запрос и всё

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

для иллюстрации) можно добавить значение секретное например и его сверять)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants