最佳答案
我知道保护 REST API 是一个被广泛评论的话题,但是我不能创建一个满足我的标准的小原型(我需要确认这些标准是现实的)。如何保护资源以及如何使用 Spring 安全性有很多选项,我需要澄清我的需求是否现实。
我的要求
现状
我的 REST API 工作得非常好,但是现在我需要保护它。当我在寻找一个解决方案时,我创建了一个 javax.servlet.Filter
过滤器:
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
String accessToken = request.getHeader(AUTHORIZATION_TOKEN);
Account account = accountDao.find(accessToken);
if (account == null) {
throw new UnauthorizedException();
}
chain.doFilter(req, res);
}
但是使用 javax.servlet.filters
的这个解决方案不能按照我的需要工作,因为通过使用 Springservlet dispatcher
的 @ControllerAdvice
进行异常处理存在问题。
我需要的
我想知道这些标准是否切合实际,是否有帮助,如何开始使用 Spring Security 保护 REST API。我读了很多教程(例如 Spring Data REST + Spring 安全) ,但是所有的都是在非常基本的配置中工作的——使用 它们的凭证存储在内存中进行配置的用户,我需要使用 DBMS 并创建自己的身份验证器。
请给我一些如何开始的建议。