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)
인증방식
- 소비자가 서비스제공자에게 요청토큰을 요청한다.
- 서비스제공자가 소비자에게 요청토큰을 발급해준다.
- 소비자가 사용자를 서비스제공자로 이동시킨다. 여기서 사용자 인증이 수행된다.
- 서비스제공자가 사용자를 소비자로 이동시킨다.
- 소비자가 접근토큰을 요청한다.
- 서비스제공자가 접근토큰을 발급한다.
- 발급된 접근토큰을 이용하여 소비자에서 사용자 정보에 접근한다.
→ 사용자가 누구인지 인증(Authentication)하는 프로토콜이 아닌, 사용자의 요청이 권한이 있는지 확인하는 인가(Authorization) 프로토콜
→ 인증 : 로그인 / 인가 : 기능을 사용할 수 있도록 허가
→ 사용자의 Certification를 확인하는 것이 아닌 Key(Oath Token)을 확인하는 것(허가 받는 것)
왜 필요한가?
- 타 사이트에서 사용자의 정보를 가져와야할 때, 사용자가 권한을 주는 부분만 제공할 수 있게 함
- → MBTI 검사 사이트에서 네이버를 통해 사용자 정보를 가져오고 싶을 때, 네이버에 사용자 정보 접근 요청을 하고 네이버로부터 허가 받은 사용자 정보 일부 권한을 제공
- 혹은 타 사이트에서 사용자의 정보를 받지 않고 애플리케이션의 기능을 사용할 수 있게 함
- → 사진 보정 앱에서 인스타그램에 사용자 정보를 받지는 않고, 사진 보정 후 바로 게시를 할 수 있게 함
- 소셜 로그인은 타 사이트에서 사용자의 정보를 받아서 바로 가입 가능(사용자의 정보를 복사)
- 소셜 사이트 입장에선 서비스 제공자의 역할을 제공함으로 사용자들에게 자신들을 보다 더 노출 시킬 수 있음
참고링크
FrameWork
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 |