0. 프로젝트 소개(Spring Security) 및 Security에 대하여
1. User Entity 생성(Spring Security)
2. User 회원가입 (Spring Secureity)
3.Jwt의 사용 이유 (Spring Security)
4. Authorization(인증)
- 4-0 Authorization(인증) - 프로세스 설명
- 4-1 Authentication(인증) - UserDetails, UserDetailsService 및 JwtService 생성
- 4-2 Authentication(인증) - UsernamePasswordAuthenticationfilter 생성
- 4-3 Authentication(인증) - CorsFilter(선택사항)
- 4-4 Authentication(인증) - SecurityConfig
5. Authorization(인가)
- 5-1 Authorization(인가) - Jwt 인가 관련 에러 처리
- 5-2 Authorization(인가) - Jwt 인가 서비스 로직 추가
- 5-3 Authorization(인가) - AuthorizationFilter 생성
- 5-4 Authorization(인가) - SecurityConfig에 인가 관련 method 추가
6. OAuth
JwtError메시지 생성
@Getter
@RequiredArgsConstructor
public enum JwtErrorMessage {
JWT_TOKEN_IS_VALID("유효한 토큰입니다.")
, JWT_ACCESS_IS_NOT_VALID("access 토큰이 유효하지 않습니다.")
, JWT_REFRESH_IS_NOT_VALID("refresh 토큰이 유효하지 않습니다.")
, JWT_ACCESS_IS_EXPIRED("access 토큰이 만료되었습니다.")
, JWT_REFRESH_IS_EXPIRED("refresh 토큰이 만료되었습니다. 다시 로그인 해주세요.")
, JWT_IS_NOT_VALID("토큰이 유효하지 않습니다.")
, JWT_HEADER_IS_NOT_VALID("헤더가 유효하지 않습니다.")
, JWT_MEMBER_IS_NOT_FOUND_TOKEN("회원정보가 존재하지 않습니다.")
, JWT_MEMBER_IS_NOT_FOUND_EMAIL("email이 존재하지 않습니다.")
;
private final String message;
}
JwtException
/**
* @package com.example.spring_security.config.security.jwt.exception
* @class JwtException
* @author 최원호
* @date 2023.06.22
* @version 1.0
*/
public class JwtException extends AuthorizationServiceException {
public JwtException(JwtErrorMessage message) {
super(message.getMessage());
}
}
인가 관련 에러를 처리하는 메소드이다.
AccessDeniedHandlerImpl
/**
* @package com.example.spring_security.config.security.jwt.exception
* @class AccessDeniedHandlerImpl
* @author 최원호
* @date 2023.06.22
* version 1.0
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class AccessDeniedHandlerImpl implements AccessDeniedHandler {
private final JwtService jwtService;
/**
* @brief 인가 오류시 실행되는 method
* @param request
* @param response
* @return accessDeniedException
*/
@Override
public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {
jwtService.setResponseMessage(false, response, "권한 오류");
}
}
인가 과정중에 권한 및 오류 시 실행되는 메소드이다.
인가예외가 발생하게 되는 순간 AccessDeniedException에서 예외를 받아 accessDeniedHandler를 호출한이후에 예외를 처리 하게 된다.
'SpringBoot Security' 카테고리의 다른 글
5-3 Authorization(인가) - AuthorizationFilter 생성 (0) | 2023.07.11 |
---|---|
5-2 Authorization(인가) - Jwt 인가 서비스 로직 추가 (0) | 2023.07.11 |
4-4 Authentication(인증) - SecurityConfig (0) | 2023.07.09 |
4-3 Authentication(인증) - CorsFilter(선택사항) (0) | 2023.07.09 |
4-2 Authentication(인증) - UsernamePasswordAuthenticationfilter 생성 (0) | 2023.07.09 |