<출처 : 코드스테이츠>
친구와 진행중인 프로젝트는 Git OAuth를 이용하여 로그인하는 방식으로 채택하였다.
위 이미지는 OAuth 인증의 흐름이다.
깃허브에 내 앱을 등록하여 클라이언트 ID와 클라이언트 시크릿을 발급받고 이를 이용하여 아래와 같이 로그인을 시도하면 내가 지정한 리디렉션 URL로 연결된다.
https://github.com/login/oauth/authorize?client_id=<CLIENT_ID>&state=<random_string>
필수 파라미터:
권장 파라미터:
GitHub 로그인 화면에서 사용자가 계정을 선택하고 필요한 권한을 승인하면 Github는 설정된 rediect_uri
로 사용자를 리다이렉트 하며, authorization_code
를 쿼리 파라미터로 반환한다.
https://yourapp.com/<내가 지정한 uri>?code=AUTHORIZATION_CODE
서버는 해당 컨트롤러에서 서비스 레이어를 통해 액세스 토큰을 요청한다.
POST https://github.com/login/oauth/access_token
Content-Type: application/json
{
"client_id": "<발급받은 CLIENT_ID>",
"client_secret": "<발급받은 CLIENT_SECRET>",
"code": "<쿼리로 날라온 AUTHORIZATION_CODE>",
"redirect_uri": "<지정한 REDIRECT_URI>",
"state": "<random_string>"
}
요청이 성공하면 액세스 토큰이 반환되고 이를 통해 사용자 정보를 요청할 수 있다.
GET https://api.github.com/user
Authorization: Bearer <ACCESS_TOKEN>