[에러]
JWT 적용하고 로그인 이후, response header를 통해
로그인 인증 유저에게 발행된 JWT Authorization이 전달되지 않아 서비스 이용이 불가능.
[원인]
로그인 인증 성공 시 JWT를 생성하여 response 헤더로
JWT 토큰을 전달하는 메서드에서 토큰만 발행하고 응답의 Header 필드에 전달해주지 않았음.
@Override
protected void successfulAuthentication(HttpServletRequest request,
HttpServletResponse response,
FilterChain chain,
Authentication authResult) throws IOException, ServletException {
Member member = (Member) authResult.getPrincipal();
String accessToken = delegateAccessToken(member);
String refreshToken = delegateRefreshToken(member);
this.getSuccessHandler().onAuthenticationSuccess(request, response, authResult);
}
[해결]
로그인 인증 성공 시 JWT 토큰을 발행하고, 발행한 토큰을 response 의 필드에 직접 할당해주어 해결.
@Override
protected void successfulAuthentication(HttpServletRequest request,
HttpServletResponse response,
FilterChain chain,
Authentication authResult) throws IOException, ServletException {
Member member = (Member) authResult.getPrincipal();
String accessToken = delegateAccessToken(member);
String refreshToken = delegateRefreshToken(member);
response.setHeader("Authorization", "Bearer "+accessToken);
response.setHeader("Refresh", refreshToken);
response.addHeader("Access-Control-Expose-Headers", "Authorization, Refresh");
this.getSuccessHandler().onAuthenticationSuccess(request, response, authResult);
}
'마주쳤던 이슈 기록' 카테고리의 다른 글
#9. Docker build - error from sender: context canceled (0) | 2023.05.29 |
---|---|
#8. JUnit - The following parts of the payload were not documented (0) | 2023.05.19 |
#6. 유저의 행동 횟수 조건 reset = Spring Data JPA 자동메서드 (0) | 2023.05.11 |
#5 Mapper: Dto -> Entity 변환 시 Null 에러 (0) | 2023.05.09 |
#4. @Value 애너테이션 미인식 에러 (0) | 2023.05.02 |