소셜로그인 리다이렉션 헤더 토큰

소셜 로그인 성공하면 헤더 값에 토큰을 세팅을 해놓았는데 로그인 과정 중 리다이렉션 쪽에서 헤더값에 토큰들이 설정되있더라구요.
그래서 해당 헤더 값을 어떻게 가져올지 생각했는데 쿼리 파라미터는 보안 상 안좋을것같습니다.
그래서 일단 spring 코드 내에서 로그인 성공하면 request.getSession().setAttribute로 토큰 값을 저장 후 추가정보 기입 페이지 리다이렉션을 @GetMapping으로 받아서 (String) request.getSession().getAttribute 로 토큰 값을 꺼낸 후 헤더 값에 세팅하는 형식으로 했습니다. 이렇게 하는지 확신이 안듭니다.

소셜로그인 중 서버 내에서 자동으로 리다이렉션 할 때 헤더 값은 원래 못가져오나요?아니면 프론트엔드에서 “http://localhost:8080/login/oauth2/code/kakao?code=” 엔드포인트를 캐치를 해서 헤더에 담긴 토큰을 가져오나요??

또 고민든게 추가정보 기입 페이지로 리다이렉션 할 때 이때도 인증/인가 검사를 해야한다고 생각합니다. 그럼 필터에서 요청 할 때마다 엔드포인트가 추가정보 기입 페이지 엔드포인트면 (String) request.getSession().getAttribute 로 토큰 값 꺼내고 아니면 헤더에서 값 꺼내고 모든 요청에 대한 엔드포인트를 비교하는것도 안좋다고 생각하는데 방법이 있을까요??

@Component
@RequiredArgsConstructor
public class OAuth2SuccessHandler implements AuthenticationSuccessHandler {

    private final UserRepository userRepository;
    private final TokenProvider tokenProvider;
    private static final String SUCCESS_URI = "/api/v1/auth/success";
    private static final String ADD_INFO_URI = "/api/v1/auth/add-info";

    @Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
                                        Authentication authentication) throws IOException, ServletException {
        String id = authentication.getName();
        User user = userRepository.findById(convertStringToLong(id)).orElseThrow(() -> new AuthException(NOT_EXIST_USER));
        String uid = user.getUid();

        String accessToken = tokenProvider.generateAccessToken(authentication);
        String refreshToken = tokenProvider.generateRefreshToken(authentication);

        request.getSession().setAttribute("accessToken", accessToken);
        request.getSession().setAttribute("refreshToken", refreshToken);

        if (uid == null) {
            String addInfoRedirectUrl = UriComponentsBuilder.fromUriString(ADD_INFO_URI)
                    .build().toUriString();

            response.sendRedirect(addInfoRedirectUrl);
            return;
        }

        issueTokensAndRedirect(response, uid, user.getNickName(), user.getProfile());
    }

    public static void issueTokensAndRedirect(HttpServletResponse response, String uid, String nickName, String profile) throws IOException {

        setValueInHeader(response, uid, nickName, profile);

        String redirectUrl = UriComponentsBuilder.fromUriString(SUCCESS_URI)
                .build().toUriString();

        response.sendRedirect(redirectUrl);
    }

    public static void setValueInHeader(HttpServletResponse response, String uid, String nickName, String profile) {

        response.setHeader(UID, uid);
        response.setHeader(NICKNAME, nickName);
        response.setHeader(PROFILE, profile);
    }

카카오 로그인은 OAuth2 표준으로 구글로그인, 애플로그인, 네이버로그인, 페이스북로그인 등 각종 소셜로그인과 작동방식이 동일합니다.

설정된 리다이렉트 URI로 HTTP 302 리다이렉트하며 code 파라메터로 인가코드를 전달하고
인가코드로 액세스 토큰 발급 받는 방식이죠.

설명해주신 내용상 카카오에서 제공하는 액세스 토큰을 말씀하신건지, 자체 발급하는 JWT토큰을 말씀하신건지 혼재되어 구분하기 어렵습니다.

리다이렉션 쪽에서 헤더값에 토큰들이 설정되있더라구요.

이부분도 어떤 것을 말씀하신건지 이해하기 어렵습니다. ( 카카오로그인은 그렇게 처리 하지 않습니다. )
기재하신 코드를 보면 카카오와 무관한 자체 토큰 발급 내용으로 보이구요.


카카오 로그인 시,
spring oauth2 client 모듈을 사용하신다면 해당 모듈에 일임하시면되고,
백엔드에서 직접 구현하셔도 무방합니다.

카카오 로그인에 관한 간단한 예제는 아래 내용 먼저 참고해주시겠어요?

[rest api 예제] java (spring boot) - 카카오 로그인, 카카오 친구목록 조회, 메시지 발송