CS

[CS]OAuth란?

그레고리력 2021. 5. 7. 20:58

OAuth란?


사용자가 어떤 애플리케이션을 이용할 때, 외부 서비스의 API를 이용하여 로그인 하도록 해주는 것(네이버 아이디로 로그인 등)

배경

  • OAuth가 사용되기 전에는 보안이 취약한 구조
  • 각 애플리케이션이나 웹 사이트마다 개별적인 인증 방식으로 아이디와 비밀번호를 사용하여 로그인(사용자 불안감)
  • OAuth는 제각각인 인증방식을 표준화한 것으로 인증을 공유하는 애플리케이션끼리는 별도 인증과정 불필요

과정


  • Access Token : 임의의 문자열 값으로 이 토큰을 발급해준 서비스만 알 수 있다, 이 토큰값과 관련된 고객의 정보를 우리는 해당 서비스에 요청할 수 있다. 해당 서비스는 이 토큰을 검증하고, 발급된게 맞다면 해당 고객의 정보를 넘겨준다.
  • 고객이 해당 서비스(네이버)에 로그인하면 네이버는 Access Token을 건네준다.

Access Token을 넘겨받는 과정

  • Redirect : 리다이렉션 되면서 토큰값은 URL으로 건네준다.(네이버에 서비스를 등록하는 과정에서 redirect_uri 등을 합의해 피싱을 방지한다)
  • 이후 토큰을 이용해 네이버의 API에 따라 사용자 정보를 요청한다.

참고


  • '인증(Authentication)' 프로토콜이 아닌 '인가(Authorization)' 프로토콜
  • 인증 : 접근 가능함을 확인하는 과정
  • 인가 : 허가, 접근 권한을 관리
  • 사용자의 확인(인증) 과정을 통해 권한을 부여(인가)