REST API 보안이 널리 언급되는 주제라는 것을 알고 있지만 내 기준을 충족하는 작은 프로토 타입을 만들 수 없습니다 (이러한 기준이 현실적인지 확인해야 함). 리소스를 보호하는 방법과 Spring 보안으로 작업하는 방법에는 너무 많은 옵션이 있으므로 내 요구가 현실적인지 명확히해야합니다.
내 요구 사항
- 토큰 기반 인증 자-사용자는 자격 증명을 제공하고 고유하고 시간이 제한된 액세스 토큰을 얻습니다. 자체 구현에서 토큰 생성, 유효성 확인, 만료를 관리하고 싶습니다.
- 일부 REST 리소스는 공개되므로 인증 할 필요가 없습니다.
- 일부 리소스는 관리자 권한이있는 사용자 만 액세스 할 수 있습니다.
- 모든 사용자에 대한 권한 부여 후에 다른 리소스에 액세스 할 수 있습니다.
- 기본 인증을 사용하고 싶지 않습니다.
- Java 코드 구성 (XML 아님)
현재 상태
내 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
은 @ControllerAdvice
Spring을 통한 예외 처리에 문제가 있기 때문에 필요에 따라 작동하지 않습니다 servlet dispatcher
.
내가 필요한 것
이 기준이 현실적인지 알고 싶고 도움이 필요하며 Spring Security로 REST API 보안을 시작하는 방법을 알고 싶습니다. 많은 튜토리얼 (예 : Spring Data REST + Spring Security )을 읽었 지만 모두 매우 기본적인 구성으로 작동 합니다. 자격 증명을 가진 사용자 는 구성의 메모리 에 저장 되며 DBMS로 작업하고 자체 인증자를 만들어야합니다.
시작하는 방법을 알려주세요.