[Security] OAuth 2.0
in Development on Server, Security, 개념
“해당 포스팅은 우아한Tech의 [10분 테코톡] 토닉, 후디의 인증과 인가 - 부족사회부터 소셜로그인까지을 참고하여 포스팅하였습니다. 영상을 제작해주신 우아한Tech와 토닉, 후디님에게 감사드립니다.”
#목차
OAuth 2.0
OAuth 2.0 이란?
“다른 웹사이트 상의 자신들의 정보에 대해 접근 권한을 부여할 수 있는 공통적인 수단이자 개방형 표준”
소셜 로그인의 등장
“구글, 페이스북, 깃헙 등의 로그인을 사용하는 인증 및 인가 절차를
OAuth와 OpenID
라 한다.”
우리는 어떻게 소셜 로그인을 사용한 로그인을 할 수 있을까?
“OAuth는
인가
에 대한 기술이고, OpenID는인증
에 대한 기술이다.”
- 여기서 근간 기술인 OAuth와 OpenID 두 가지 기술이 존재 한다.
OAuth2.0 이전
발단
- 디스이즈우닷컴은 서비스를 제공하기 위해서 사용자의 구글 주소록이 필요해서 사용자의 ID/PW를 직접 제공받기로 한다.
전개
- 사용자가 디스이즈우닷컴에
구글 ID/PW를 제공
해 주면 - 그 정보로 디스이즈우닷컴에 구글에
로그인
하게 된다 - 구글은 디스이즈우닷컴에게 사용자의
주소록을 제공
해 준다 - 디스이즈우닷컴은 사용자에게
서비스를 제공
해 준다
문제 발생
하지만
, 여기에는 굉장히 많은 문제점이 발생하게 된다- 사용자
- 디스이즈우닷컴이 해킹돼서 내 계정이
탈취
되면? - 에초에 디스이즈우닷컴이
악의적인
웹사이트 면?
- 디스이즈우닷컴이 해킹돼서 내 계정이
- 디스이즈우닷컴
- 사용자의 민감한 개인 정보를
가지고
있어도 되나?
- 사용자의 민감한 개인 정보를
- 구글
- 회원 정보를 믿을 수 없는 제3자에게
가지고
되나?
- 회원 정보를 믿을 수 없는 제3자에게
OAuth의 표준화
- 따라서, OAuth의 표준화가 시작된다
OAuth의 버전
“해당 포스트에서는 OAth2.0 기준으로 포스팅 하겠다”
OAuth의 주체
OAuth의 detail 주체
OAuth의 동작과정
“OAuth2.0의 동작과정을 간단한 시퀀스 다이어그램”
“Scope란 클라이언트에게 허용된 리소스 접근 범위”
- Resource Owner는 Client에게
로그인 요청
하게 된다 - Client는 Authorization Server에
OAuth 인증 요청
하게 되는데, 이때Scope
도 같이 요청하게 된다 - Authorization Server는 Resource Owner에게
로그인 페이지 제공
- Resource Owner는 해당 페이지에서
로그인
하게 된다 - Authorization Server는 Resource Owner에게
Authorization Code
라는 임시 코드를 발급해 준다 - 그 즉시 Resource Owner는 Redirect URI로 리디렉션 되는데, 이때
Authorization Code
를 함께 가지고 리디렉션 된다. - Client는 방금 받은 Authorization Code를 통해
Access Token
을 발급 요청하게 된다 - Authorization Server는
Access Token
을 발급해 준다- Client는 해당 Access Token을 자체 서비스에 저장 및 관리한다
- Client는 Resource Owner에게
로그인 성공
을 알려준다 - 시간이 흐르고 Resource Owner가 Client에게
서비스 요청
- 이때 Client는 Access Server에
저장된 Access Token
으로 리소스 요청 - Access Server에서 Access Token이
검증
되면 Client에게 리소스 제공 - 그리고 Client는 Resource Owner에게
서비스 제공
Continue with [Security] OpenID