본문 바로가기
CS/WEB

[CS/WEB] OAuth (+ JWT)

by 김비누! 2022. 9. 22.

OAuth

OAuth는 인증을 통해 권한을 획득하는 표준 프로토콜이다.

인터넷 사용자들이 비밀번호를 제공하지 않고, 
다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있다.

 

Google, Naver, Github 등에서 제공하는 간편 로그인 기능은 OAuth 프로토콜을 이용한 것이다.

간편 로그인 외에도 외부 웹 어플리케이션에 Google로 로그인하면 API를 통해 연동된 계정의 연락처나 캘린더의 일정을 가져올 수 있다.

 

OAuth Flow

OAuth 프로토콜의 참여자는 크게 3가지로 구분할 수 있다.

  • 유저: 계정을 가지고있는 개인
  • 서비스: 자원 제공자에 접속해 정보를 가지고오고자 하는 웹 어플리케이션
  • 자원 제공자: 자원을 보유하고 있는 서버, 계정정보 등을 저장하고 있다. (Google, Naver..)

 

OAuth 프로토콜의 과정은 아래와 같다.

  • 유저가 서비스에 접근하면
  • 서비스는 자원 제공자에게 요청토큰을 요청, 발급받는다.
  • 서비스는 유저를 자원 제공자쪽으로 이동시켜 사용자 인증 (ex. 로그인)이 수행된다.
  • 유저는 클라이언트로 돌아간다.
  • 정상적으로 사용자인증이 수행되었다면 서비스는 자원제공자에게 접근토큰을 요청, 발급받는다.
  • 접근 토큰을 이용해서 서비스는 api 호출,
  • 자원 제공자로부터 제공받은 자원을 유저에게 제공한다.

 

참고

https://gilssang97.tistory.com/55

https://inpa.tistory.com/entry/WEB-📚-OAuth-20-개념-💯-정리

댓글