상세 컨텐츠

본문 제목

OAuth 2.0(Open Authorization 2.0,)

Computer Science/Security

by Yongari 2023. 1. 5. 22:13

본문

 

우리가 일상에서 쓰는 소셜 로그인 인증 방식은 전부 OAuth2라는 기술을 바탕으로 구현됩니다.

OAuth는 무슨 기술이냐? 라고 물으신다면 OAuth는 인증을 중개해주는 메커니즘입니다. 

보안된 리소스에 엑세스하기 위해 클라이언트에게 권한을 제공해주는 프로세스를 단순화한 프로토콜입니다. 

 

그렇다면 소셜 로그인 인증방식은 무엇일까요? 소셜 로그인 인증 방식은 Naver, Kakao, Google, Facebook, Instagram, Github에 있는 로그인정보를 가지고 로그인을 하는 방식이고 이 떄 OAuth 기술을 사용합니다. 

OAuth는 위에서 말한 서비스들에 이미 정보가 있는 사용자의 인증을 대신해주고, 접근 권한에 대한 토큰을 발급한 후 이를 이용해 인증이 가능해지게 하는 방식입니다. 

 

OAuth가 모든걸 해결해주는 솔루션은 아닙니다. 사용자 정보가 내 서버에 저장되는 것은 변함이 없습니다. OAuth는 인증(Authentication)을 다른 서비스에 맡길 뿐, 접근 권한 관리(Authorization)은 순전히 내 서버의 몫입니다.  

그렇다면 인증(Authentication)접근 권한 관리(Authorization)의 차이는 무엇일까요??

 

인증(Authentication) : 내가 누구인지 주장하는 사람에 대해서 그 사람을 확인하는 절차(로그인, 패스워드를 입력해서 인증해주는 행위)

접근 권한 관리(Authorization) : 어떤 사람인지 아는 상태에서 무슨일을 할 수 있는지 권한을  관리하는 기술

 

 

OAuth 2.0이란?

OAuth 2.0 : Open Authorization 2.0의 줄임말

OAuth 2.0은 승인을 위한 업계 표준 프로토콜입니다. 그리고 보안된 리소스에 엑세스하기위해 클라이언트에게 권한을 제공(Authorization)하는 프로세스를 단순화하는 프로토콜 중 한 방법입니다.

 

 

OAuth 2.0을 쓰는 이유?

유저가 여러 사이트에 대한 로그인 정보를 가지고 관리하는 것은 정말 귀찮은 일입니다. 그래서 자주 또는 많이 쓰는 서비스의 아이디와 비밀번호만 기억해놓고 그 서비스를 통해 소셜 로그인을 할 수 있습니다. 매우 편린하죠 만약 100개 사이트의 로그인정보를 기억하는 것과 구글, 카카오, 네이버 등의 사이트의 소셜로그인 정보만 가지고 관리한다고 생각하면 매우 편리합니다.

 

그리고 이런 경우 보안상의 이점도 있습니다. 검증되지않은 App에서 OAuth를 이용하여 로그인한다면 유저의 민감한 정보가 직접 App에 노출될 일은 없기 때문이죠.

 

 

OAuth에서 꼭 알아야 할 용어

 

Resource Owner : 엑세스 중인 리소스의 유저, 용가리가 구글 계정을 이용해서 App에 로그인할 경우 Resource Owner는 용가리가됩니다.

Client : Resource Owner를 대신하여 보호된 리소스에 엑세스하는 응용프로그램입니다.  클라이언트는 서버, 데스크탑, 모바일 등 기타장치가 될 수 있습니다.

Resource servver : client 요청을 수락하고 응답하는 서버

Authorization server : Resource server가 엑세스 토큰을 발급받는 서버

Authorization grant : 클라이언트가 엑세스 토큰을 얻을 떄 사용하는 자격 증명의 유형

Authorization code : access token을 발급받기 전에 필요한 code client ID로 이 code를 받은 후 client secret과 code를 이용해 Access Token을 받아옵니다. 

AccessToken: 보호된 리소스에 엑세스하는 데 사용되는 credentials Authorization code와 client secret을 이용해 받아온 이 AccessToken 으로 이제 resource server에 접근을 할 수 있습니다. 

 

 

 

 

 

 

 

출처 : https://oauth.net/2/

관련글 더보기