- OAuth (Open Authorization)란?
보안 위임 엑세스 개방형 표준.
사용자가 비밀번호를 제공하지 않고도 로그인 할 수 있도록,
웹사이트나 애플리케이션이 다른 웹사이트에 있는 자신의 정보에 대해 접근할 수 있는 권한을 부여할때 사용되는 표준.
구글, 카카오, 네이버 등의 소셜로그인도 이 OAuth 2.0 프로토콜의 설계 원칙을 따라 설계되어 있다.
OAuth2.0 인증방식에 4가지 종류가 있지만 인가 코드 승인 방식(Authorization Code Grant)이 가장 기본으로 쓰이고 있다.
프로젝트에서 카카오 로그인을 사용했기 때문에 카카오 로그인 과정을 정리해보았다.

<인가 코드 받기> https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#request-code
- 카카오 인증 서버로 카카오 로그인 요청
GET | https://kauth.kakao.com/oauth/authorize
요청쿼리 - 카카오 유저인지 인증 요청하는 화면 응답 받음
- 유저가 카카오 계정 로그인
- 카카오회원 인증이 되었다면 회원의 인가 확인
*인가 : 서비스에서 요청한 사용자 동의 필요 정보 또는 접근권한 필요 기능을 카카오가 제공해도 될지 사용자에게 동의를 구하는 것
- 신규연결 : 서비스 동의화면 → 접근 동의한 항목 받기 (인가)
- 기존 유저 : 기존에 동의한 항목 확인
- Redirect URI로 인가코드 응답 받음 (code=뒤의 값)
사용자가 인가를 완료했다는 결과로 인가코드가 생성된다.
*Redirect URI은 사전에 콘솔에 설정해둔 주소.
응답쿼리
<인가 코드로 토큰 받기> https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#request-token
인가 코드와 달리 토큰은 URL에 노출되는 것을 막고, 발급 요청 시 클라이언트 ID와 시크릿 키를 검증하는 등 보안을 강화하기 위해 인가코드 발급과 토큰 발급이 분리되어 있다.
- 인가 코드를 담아 카카오 인증 서버에 토큰 발급 요청
POST | https://kauth.kakao.com/oauth/token
헤더 및 바디에 값을 넣어 요청한다. 요청 - 응답으로 토큰 받음
access_token, refresh_token, id_token(OpenID Connect 확장 선택 시)등의 토큰과 관련 정보
응답
<토큰 받은 뒤 서비스 로그인 처리>
응답으로 받은 엑세스 토큰으로 사용자 정보 가져오는 API를 호출하거나 ID토큰 페이로드를 사용해서 사용자 정보를 얻은 뒤,
서비스 회원 가입 또는 로그인 처리한다.