OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.
REST API를 이용하는 카카오 로그인 과정
프론트를 고려하지 않은 코드
@Controller
@RequiredArgsConstructor
public class KakaoController {
private final KakaoService kakaoService;
@GetMapping("/kakao-login")
public String homepage() {
return "kakao";
}
@GetMapping("${kakao.redirect-uri}")
public String kakaoLogin(@RequestParam String code, HttpServletResponse response)
throws JsonProcessingException {
kakaoService.kakaoLogin(code, response);
return "redirect:/kakao-login";
}
}
문제점이 무엇일까요?
프론트를 고려한 코드
@Controller
@RequiredArgsConstructor
public class KakaoController {
private final KakaoService kakaoService;
@ResponseBody
@GetMapping("/api/${mpt.version}/users/kakao-code")
public RedirectView redirectView() {
String url = kakaoService.redirect();
return new RedirectView(url);
}
@GetMapping("/api/${mpt.version}/users/kakao-login")
public void kakaoLogin(@RequestParam String code, HttpServletResponse response)
throws JsonProcessingException {
kakaoService.kakaoLogin(code, response);
}
}