본문 바로가기

학습활동

OAuth(Open Authorization)

OAuth(Open Authorization)

  • 표준화된 인증방식
  • 이전에는 각 애플리케이션 별로 개발한 인증방법을 사용하여 보안에 취약
  • OAuth를 이용하면 이를 공유하는 애플리케이션끼리 별도의 인증이 필요 없어짐
    • 사용자(user): 서비스 제공자와 소비자를 사용하는 계정을 가지고 있는 개인 ex) 나
    • 소비자(consumer): Open API를 이용하여 개발된 OAuth를 사용하여 서비스 제공자에게 접근하는 웹사이트 또는 애플리케이션 ex) 네이버 로그인을 쓰고싶은 제 3의 사이트
    • 서비스 제공자(service provider): OAuth를 통해 접근을 지원하는 웹 애플리케이션(Open API를 제공하는 서비스) ex) 네이버 로그인
    • 소비자 비밀번호(consumer secret) : 서비스 제공자에서 소비자가 자신임을 인증하기 위한 키 ex) 제 3의 사이트가 네이버한테 인증받기 위한 키
    • 요청 토큰(request token) : 소비자가 사용자에게 접근권한을 인증받기 위해 필요한 정보가 담겨있으며 후에 접근 토큰으로 변환됨
    • 접근 토큰(access token) : 인증 후에 사용자가 서비스 제공자가 아닌 소비자를 통해서 보호된 자원에 접근하기 위한 키를 포함한 값
    •  소비자 요청 토큰으로 사용자 접근 토큰을 요청, 소비자비밀번호 인증(Authentication)된 경우 서비스 제공자가 제한한 사용자 정보만 이용 가능(인가, Authorization)

인증방식

  1. 소비자가 서비스제공자에게 요청토큰을 요청한다.
  2. 서비스제공자가 소비자에게 요청토큰을 발급해준다.
  3. 소비자가 사용자를 서비스제공자로 이동시킨다. 여기서 사용자 인증이 수행된다.
  4. 서비스제공자가 사용자를 소비자로 이동시킨다.
  5. 소비자가 접근토큰을 요청한다.
  6. 서비스제공자가 접근토큰을 발급한다.
  7. 발급된 접근토큰을 이용하여 소비자에서 사용자 정보에 접근한다.

→ 사용자가 누구인지 인증(Authentication)하는 프로토콜이 아닌, 사용자의 요청이 권한이 있는지 확인하는 인가(Authorization) 프로토콜

→ 인증 : 로그인 / 인가 : 기능을 사용할 수 있도록 허가

→ 사용자의 Certification를 확인하는 것이 아닌 Key(Oath Token)을 확인하는 것(허가 받는 것)

왜 필요한가?

  • 타 사이트에서 사용자의 정보를 가져와야할 때, 사용자가 권한을 주는 부분만 제공할 수 있게 함
  • → MBTI 검사 사이트에서 네이버를 통해 사용자 정보를 가져오고 싶을 때, 네이버에 사용자 정보 접근 요청을 하고 네이버로부터 허가 받은 사용자 정보 일부 권한을 제공
  • 혹은 타 사이트에서 사용자의 정보를 받지 않고 애플리케이션의 기능을 사용할 수 있게 함
  • → 사진 보정 앱에서 인스타그램에 사용자 정보를 받지는 않고, 사진 보정 후 바로 게시를 할 수 있게 함
  • 소셜 로그인은 타 사이트에서 사용자의 정보를 받아서 바로 가입 가능(사용자의 정보를 복사)
  • 소셜 사이트 입장에선 서비스 제공자의 역할을 제공함으로 사용자들에게 자신들을 보다 더 노출 시킬 수 있음

참고링크

 

OAuth - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. OAuth 로고. 크리스 메시나가 설계함. OAuth("Open Authorization")는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트

ko.wikipedia.org

 

OAuth 2.0 — OAuth

OAuth 2.0 OAuth 2.0 is the industry-standard protocol for authorization. OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones, and living room devices. This

oauth.net

FrameWork

https://github.com/p2/OAuth2

Github OAuth 설정 방법

https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app

728x90

'학습활동' 카테고리의 다른 글

Swift Concurrency I  (0) 2023.09.28
User Notifications  (0) 2023.09.25
Localization  (0) 2023.08.31
Frame / Bounds  (0) 2023.08.29
animateKeyframes / addKeyframe 실습  (0) 2023.08.28