ㅁㄴㅇㄻㄴㅇㄹ

[Network] OAuth란? 본문

Network

[Network] OAuth란?

hanbin8269 2021. 4. 2. 23:06

 

 

프로그래머스 로그인 페이지

프로그래머스에 들아가서 로그인 버튼을 누르면, 위와 같은 화면이 나온다.

저기서 만약 Github으로 계속하기 버튼을 누른다면, Github 로그인 페이지로 이동하게 된다.

그리고 그곳에서 Github 로그인을 하면 프로그래머스 서비스를 이용할 수 있게 된다.

 

나는 분명 Github 로그인을 했는데 왜 프로그래머스 서비스를 이용할 수 있는 걸까?

이것에 대해 알려면 OAuth를 알아야 한다.


OAuth란?

로그인을 제공하는 플랫폼(Github)의 계정만 있다면 외부 서비스(프로그래머스) 에서도 인증을 가능하게 하여 API를 사용할 수 있도록 해주는 프로토콜이다. 그렇기 때문에 Github 로그인을 했는데도 프로그래머스의 서비스를 사용할 수 있게 된 것이다.

 

OAuth가 무엇인지 알았다면 이제 OAuth의 인증 절차에 대해 알아보자


OAuth 인증 방식

용어 정리

Resource Owner Resource Server의 계정을 소유하고 있는 사용자 ex) User
Client OAuth를 이용해 서비스를 제공하는 앱 ex) 프로그래머스, 내가 개발하고 싶은 앱
Authorization Server 토큰을 발급해주는 서비스 ex) Github 로그인 기능
Resource Server Resource Owner의 자원을 관리하는 서버 ex) Github

인증 절차

  1. Resource Owner가 Authorization Server에서 보내준 Github 로그인 페이지에 ID/PW 정보를 입력한다.
  2. Authroization Server Authorization CodeRedirect URL에 결합시켜 헤더에 담아 Resource Owner에게 전달한다.
  3. Resource OwnerRedirect URL에 리다이렉트하면 Client Client ID , Client Secret , code, Redirect URL 정보를 Authroization Server에게 전달해 Access Token 발급 요청을 한다.
  4. Access Token이 발급되었다면 Resource Owner에게 전달하며 로그인을 성공시킨다

리소스 요청

이후에 Resource OwnerClient에게 요청할 때마다 Access Token을 요청에 포함시킨다.

'Network' 카테고리의 다른 글

[Network] OSI 7 계층은 대충 이런거다  (0) 2021.04.19
[Network] TCP 3 Way Handshake란?  (0) 2021.04.02