给定IP的Spring安全性自动授权

问题描述 投票:0回答:2

是否有可能在Spring Security中(当然可能是Java,所以问题是 - 是否有可能以一种相对无痛的方式)自动授权来自本地主机的所有请求(好的,某些给定的IP)作为属于的请求给定的测试用户。

例如在某些过滤器中 - 接受所有请求,检查IP以及它是否来自本地主机,例如spring.authorizeAs(“user”)

java web spring-security
2个回答
0
投票

This answer对于类似的问题可能对你有帮助。根据您的要求,您可以构建主体并将其手动设置为Security Context


0
投票

就我而言,答案如下

@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() {

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.