unique=true
73
2022-04-11 19:38:50
2
189

소셜 로그인시 Spring Security가 세션에 저장하는 정보 커스텀할 수 있나요?


안녕하세요.


혹시 스프링 시큐리티 + OAuth2 연동시에 스프링 시큐리티에서 세션에 저장하는 정보를 커스터마이징하려면 어떻게 해야 하나요?


스프링 세션 JDBC 사용 도중, 자동 생성되는 세션 관련 테이블에서 특정 컬럼이 100자 제한인데, 세션에 저장된 값이 그 길이를 초과해서(!) 데이터 못 넣는 오류가 발생했습니다.

소셜 로그인은 구글 카카오 네이버를 구현해뒀는데 네이버에서만 오류가 나고 구글은 해당 컬럼이 null, 카카오는 임의의 난수로 들어가더라고요. 그런 거 보면 제가 설정하는 게 아니라(?) 공급자쪽에서 정하는 걸까요??


문제가 스프링 시큐리티 & 스프링 세션 & 소셜 로그인이 엮여 있다보니 어디에 문의/이슈를 남겨야 할지도 혼란스럽네요ㅜㅜ 

레디스로 바꿔서 일단 해결(?)우회(?)는 했는데 정상적인 해결책도 궁금해요...

0
  • 답변 2

  • BlueFestival
    1k
    2022-04-11 20:59:58

    스프링 시큐리티는 무관.

    스프링 세션 = HTTP 세션.

    이렇게 따로 놓고 생각하셔야 할 듯 합니다.

    해결은 소셜에서 제공하는 인증 api에서 하는게 맞는 것 같습니다.

    소셜에서 제공하는 api 중에서 특정 정보를 가져오는 변수가 있을태니 그걸 커스텀하시면 될듯 합니다.

  • unique=true
    73
    2022-04-12 14:09:49

    답변 감사합니다. 그런데 제가 스프링 시큐리티랑 관련이 있다고 생각한 이유가 있는데요, 문제가 발생하는 값이 제가 직접 세션에 저장한 값이 아닙니다ㅜㅜ...

    서비스단에서 로그인 성공시에 DB에 정보 넣고, 화면단에서 쓸 DTO(사용자명, 프로필 사진 경로)를 세션에 추가하는 작업을 처리하는데, 제가 직접 만든 DTO는 100자 제한에 걸리지 않습니다. JDBC든 Redis든 세션에 저장되는 값을 보면 제가 만든 DTO 외에도 따로 저장되는 값들이 있고, 그 값들에서 100자 초과 문제가 생깁니다.

    그렇지만 네이버에서만 발생하니 네이버 API의 문제인 것 같긴 하네요...ㅜㅜ

  • 로그인을 하시면 답변을 등록할 수 있습니다.