OAuth 정의

Untitled

OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.

REST API를 이용하는 카카오 로그인 과정

Kakao Developers

Untitled

KakaoController.java

프론트를 고려하지 않은 코드

@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);
    }
}