Spring security авто авторизация для данного IP - PullRequest
0 голосов
/ 31 августа 2018

Возможно ли в Spring Security ( ну, конечно, это Java, поэтому вопрос - возможно ли это относительно безболезненно ) автоматически авторизовать все запросы с локального хоста (ОК, некоторый данный IP) как запрос, который принадлежит данному тестовому пользователю.

Например, в каком-то фильтре - принять все запросы, проверить IP, и если он приходит с локального хоста, сказать что-то вроде spring.authorizeAs ("пользователь")

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

В моем случае ответ следующий

@Component
public class LocalAuthFilter implements Filter {


    @Autowired
    private UserDetailsService mng;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException {
        if (("127.0.0.1".equals(req.getRemoteAddr())) &&
                ("anonymousUser".equals(SecurityContextHolder.getContext().getAuthentication().getPrincipal()))) {
            UserDetails userDetails = mng.loadUserByUsername("user"); //my test user
            Authentication auth = new UsernamePasswordAuthenticationToken(
                    userDetails.getUsername(),
                    userDetails.getPassword(),
                    userDetails.getAuthorities());
            SecurityContextHolder.getContext().setAuthentication(auth);
        }
        filterChain.doFilter(req, resp);
    }

    @Override
    public void destroy() {

    }
}
0 голосов
/ 31 августа 2018

Этот ответ на аналогичный вопрос может вам помочь. Основываясь на ваших требованиях, вы создаете принципала и устанавливаете его вручную на Контекст безопасности .

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