항해99/개발일지

20220215 개발일지 #세션? JWT?

paran21 2022. 2. 16. 01:19

어느 정도 기능 구현은 완료한 상태이고,

로그인 후 요청 시 인증이 안되는 부분은 우선 프론트에서 작업하고 계셔서 낮에는 조금 여유가 있었다.

오전에는 반 비몽사몽으로 있었던 것 같고 오후에는 자바와 스프링도 조금 봤다.

cs스터디하고 나서 JWT 토큰 방식이 궁금해서 다른 팀원분들께 물어봤는데 다들 잘 알려주셔서 많이 배울 수 있었다.

 

프론트에서 header에 세션아이디를 토큰 처럼 보내주셨다.

그 뒤에도 여전히 인증이 안되는 문제가 있어 찾아봤는데 samesite 문제인 것 같았다.

(참고자료: https://yousrain.tistory.com/23)

 

한참 검색하다가 어떻게 방법을 찾긴 했는데, 또 다른 문제에 봉착했다...

none으로 설정할 경우 secure을 속성에 추가해야 하고, 이경우 HTTPS 에서만 쿠키가 저장된다.

여기서부터는 도저히 건들 수가 없어서, 회의가 다 끝나고 나서 급하게 JWT로 바꾸기로 했다.

@Configuration
public class WebConfig implements WebMvcConfigurer {
 
 ...

    @Bean
    public TomcatContextCustomizer sameSiteCookiesConfig() {
        return context -> {
            final Rfc6265CookieProcessor cookieProcessor = new Rfc6265CookieProcessor();
            cookieProcessor.setSameSiteCookies(SameSiteCookies.NONE.getValue());
            context.setCookieProcessor(cookieProcessor);
        };
    }
}

 

심화 강의 코드로 구현했고, 다행히 구현에 큰 어려움은 없었다.

코드는 좀 더 살펴봐야겠지만 그래도 세션한다고 계속 시큐리티 보고, 다른 분들 설명들은게 도움이 많이 됬다.

 

프론트에서 코드 수정을 해주셔야 해서 너무 죄송하다 ㅜㅜ 

서버도 크게 바뀌지는 않는데 회의 중에 로그인한 사용자 정보가 조회되지 않아 다른 변수를 쓰기로 했는데, JWT로 하면 굳이 이렇게 할 필요가 없어서 너무 왔다갔다 한 것 같다.

(이렇게 하면 security는 정말 로그인 이외에 아무 것도 하지 않게 되고, 인증도 구현되지 않는 거라서 좋은 방법은 아니다.)

다음에는 반성하고 처음부터 전략을 잘 짜서 api 명세 수정도 줄이고, 서로 더 구현하기 쉬운 방향을 찾아봐야 겠다.