728x90
Spring Security 적용JWT(Json Web Token) 발급- Token Filter 계층 추가 및 권한 부여
- Token 유효성 검사
- Token 데이터 파싱
Token Filter 계층 추가 및 권한 부여
- SecurityConfig.Class의 SecurityFilterChain에 filter를 추가합니다.
- JwtFilter.Class를 생성합니다.
- 각 클래스에 필요한 UserService, secrectKey를 추가합니다.
SecurityFilterChain에 filter 추가
@EnableWebSecurity
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception{
return httpSecurity
...
.addFilterBefore(new JwtFilter(userService, secretKey), UsernamePasswordAuthenticationFilter.class)
.build();
}
}
- JwtFilter 계층을 UsernamePasswordAuthenticationFilter 앞에 작성합니다.
- username과 password를 사용하여 이미 로그인할 때 인증을 하고 토큰을 받았기 때문에 해당 단계에서 인증을 하는 것이 아닙니다. jwt필터에서 처리하게 됩니다.
JwtFilter 추가
configuration 패키지에 JwtFilter.Class를 생성합니다.
doFilterInternal이 문이라고 생각합시다.
public class JwtFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
// user name token에서 꺼내기
String userName = "";
// 권한 부여
UsernamePasswordAuthenticationToken authenticationToken =
new UsernamePasswordAuthenticationToken(userName, null, List.of(new SimpleGrantedAuthority("USER")));
authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authenticationToken);
filterChain.doFilter(request, response);
}
}
Security Config에서 넘겨주는 값 추가
- @RequiredArgsConstructor 추가
- UserService 추가
- secrectKey 추가
...
@RequiredArgsConstructor
public class SecurityConfig {
private final UserService userService;
@Value("${jwt.secret}")
private String secretKey;
...
}
JwtFilter 값 추가
- @RequiredArgsConstructor 추가
- UserService 추가
- secrectKey 추가
@RequiredArgsConstructor
public class JwtFilter extends OncePerRequestFilter {
private final UserService userService;
private final String secretKey;
...
}
테스트
원래 결과
Token 권한 부여
아직 토큰이 유효한지, 토큰이 존재하는지 체크하지 않았기 때문에 토큰 없이도 통과되고 있습니다.
반응형
'회고록 > Archive' 카테고리의 다른 글
[Spring Security & JWT] 5. Token 값 꺼내오기 (1) | 2022.12.07 |
---|---|
[Spring Security & JWT] 4. Token 유효성 검사 (0) | 2022.12.06 |
[Spring Security & JWT] 2. JWT(Json Web Token) 발급 (0) | 2022.12.06 |
[Spring Security & JWT] 1. Security 적용 (0) | 2022.12.06 |
retrospect: 멋쟁이 사자처럼 백앤드 스쿨 2022.11.16 회고 (0) | 2022.12.04 |