배포시 redirect_uri에는 백엔드 측 주소가 들어가야 하나요?

ID: 1008984

안녕하세요!
팀 프로젝트에서 Spring boot + React + OAuth2 를 사용해서 소셜 로그인을 구현하고 있습니다.

로컬 환경에서 redirect_uri를 http://localhost:8080/login/oauth2/code/kakao로 작성했고,
소셜 로그인 처리가 잘 처리되었습니다.

kakao:
  redirect-uri: http://localhost:8080/login/oauth2/code/kakao
  authorization-grant-type: authorization_code
  client-authentication-method: client_secret_post
  client-name: kakao

만약 배포 서버의 주소가 12.34.56.78일 때 redirect_uri에 작성해야하는 주소는
http://12.34.56.78/login/oauth2/code/kakao이 되는게 맞을까요??

프론트가 아닌 백엔드 측의 uri가 들어가는게 맞는건지 궁금합니다.

안녕하세요.

네, 맞습니다.
백엔드 redirect_uri에서 접근토큰 발급 및 서비스측 인가 처리 후, 프론트측 주소로 302리디렉션 하시면 좋을것 같습니다.

1개의 좋아요

답변 감사합니다!

백엔드에서 인가 처리 후 jwt 토큰을 발급 받아서 프론트 주소로 리다이렉트 하려고 하는데 토큰 값을 어떻게 넘길 수 있을까요?

쿠키로 해보려고 하는데 잘 안됩니다 ㅠㅠ 아니면 쿠키가 아닌 다른 방법을 써야 할까요??

successHandler 구현하시어 로그인 성공 후 JWT 토큰 발급 및 response cookie에 할당하시면 좋을것 같습니다.

1개의 좋아요

늦은 시간에 빠른 답변 정말 감사드립니다!

// OAuth2User 객체에서 권한 가져옴
JwtToken jwtToken = jwtTokenProvider.createJwtToken(email, role);

// 쿠키 세팅
response.addHeader(HttpHeaders.SET_COOKIE, createCookie("accessToken", jwtToken.getAccessToken()));
response.sendRedirect("http://localhost:5173/home");

이렇게 만들어서 전송 했는데 /home 에서 받을 수가 없다고 합니다 ㅠ
백엔드는 https 프론트는 http 라서 그런걸까요??
네트워크 관련 지식이 부족해서 어렵네유…

createCookie 구현 어떻게 하셨을까요?

1개의 좋아요
private static String createCookie(String name, String value) {
    return ResponseCookie.from(name, value)
            .path("/")
            .httpOnly(true)
            .sameSite("None")
            .secure(true)
            .build()
            .toString();
}

이렇게 구현했습니다!

테스트 도중에는 위 코드 제거 부탁드립니다.
해당 옵션 사용 시, https 접근시만 쿠키 발행됩니다.

추후 https 사용 하시는 도메인 설정하게되면 옵션을 활성화 하시면 됩니다.

1개의 좋아요

.secure(true) 속성을 제거해도 안되네요 ㅠㅠㅠ
http://localhost:5173 에서 https://{배포 주소}/oauth2/authorization/kakao로 로그인 요청보내고 다시 http://localhost:5173/home으로 리다이렉트를 해주는 구조인데
왜 안될까요 후…

안녕하세요.

path도 삭제하신뒤 사용 부탁드립니다.