레넌의 개발 일기

Github OAuth 로그인 하기 본문

Web

Github OAuth 로그인 하기

brorae 2022. 7. 14. 00:55

OAuth 2.0 흐름

1. Github 로그인 자원을 요청한다.

2. Github 로그인 URL(client_id, redirect_url, scope)을 응답한다.

3. 로그인 버튼 클릭 시 Github 로그인 페이지로 이동한다.

4. Github은 정보 제공 동의 허용 여부를 물어본다.

5. 사용자가 동의한다.

6. Github은 Authorization Code를 발급해준다.

7. Authorization Code를 전달한다.

8. Client_id, Client_secret, Authorization_code를 전송한다.

9. Github Access Token을 발급해준다.

10. Github Access Token으로 사용자의 프로필 정보를 요청한다.

11. 사용자의 프로필 정보를 반환한다.

12. DB에 필요한 프로필 정보를 저장하고, 서비스만의 Acces Token을 만들어 전달한다.

 

Github에 내 앱 등록

callback URL은 로그인 성공 후 redirect할 URL을 의미한다.

앱을 등록하면 Client_id, Client_secret을 확인할 수 있다.

 

로그인 URL 확인

https://github.com/login/oauth/authorize?client_id=7df8eac7a55d5fa5f367&redirect_uri=http://localhost:8080/callback

위와 같이 파라미터로 client_id와 redirect_uri를 붙여 URL을 검색해보면 아래와 같은 화면이 나온다.

 

 

Authorization Code 발급

Authorize 버튼을 누르면 지정한 redirect_uri 화면으로 이동한다.

이동한 URL을 확인해보면 파라미터로 code가 붙어있는 것을 확인할 수 있다.

이것이 바로 Authrization Code이다.

 

Github Access Token 발급

발급된 코드로 Github Access Token을 발급 받아야한다.

Postman으로 요청을 보내 확인해 본다.

https://github.com/login/oauth/access_token?client_id=7df8eac7a55d5fa5f367&client_secret=8818009de4012e521d79627baae2c19573dc53ad&code=ddefd325d917ddb34eeb

client_id와 client_secret, code를 파라미터로 함께 POST 요청으로 보내면 access_token, scope, token_type이 응답값으로 오는 것을 확인할 수 있다.

Request Header의 Accept를 application/json으로 설정하면 Json으로 응답을 받을 수도 있다.

 

사용자 프로필 발급

https://api.github.com/user

발급 받은 토큰으로 위의 URL로 Authorization에 토큰을 담아 보내면 정상적인 Github 프로필이 반환되는 것을 확인할 수 있다.

위의 조회된 프로필을 필요에 따라서 선택하여 사용하면 된다.

 

 

참고

http://tech.pick-git.com/oauth-2.0-flow/

 

OAuth 2.0 흐름

깃-들다의 OAuth 2.0 흐름을 알아봐요.

tech.pick-git.com

https://github.com/binghe819/TIL/blob/master/Network/OAuth%202.0/OAuth2.0.md#%EC%9E%90%EC%84%B8%ED%9E%88-%EB%B3%B4%EB%8A%94-workflow

 

GitHub - binghe819/TIL: 📚 Today I Learned. 기록하자.

📚 Today I Learned. 기록하자. Contribute to binghe819/TIL development by creating an account on GitHub.

github.com

https://velog.io/@devjade/OAuth-authentication-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0github-%EB%A1%9C%EA%B7%B8%EC%9D%B8

'Web' 카테고리의 다른 글

Web Server와 Web Application Server  (0) 2022.08.25