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으로 리다이렉트를 해주는 구조인데
왜 안될까요 후…