[OAuth] OAuth 2.0

hyo·2023년 1월 29일
0

OAuth 2.0

목록 보기
1/1

시작하며

저번 프로젝트를 하며 로그인페이지부분을 맡아 구현을 했었는데,
일반 로그인기능은 구현을 맡고 다른팀원이 소셜로그인을 맡아 하지못했었다.
그래서 이번 사이드프로젝트를 진행할땐 소셜로그인도 같이 꼭 하고 싶어
OAuth를 학습하며 사용해 보려고 한다.

OAuth란?

OAuth 2.0

OAuth 2.0(Open Authorization 2.0, OAuth2)은 인증을 위한 개방형 표준 프로토콜이다.

직접 작성한 서버에서 인증을 처리해주는 것과는 달리, OAuth는 인증을 중개해주는 역할이다.
보안된 리소스에 액세스(접근)하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화하는 프로토콜이다.

즉, 이미 사용자 정보를 가지고 있는 웹 서비스에서 사용자의 인증을 대신해주고, 접근 권한에 대한 토큰을 발급한 후, 이를 이용해 내 서버에서 인증이 가능해진다.

역할

  • Resource Owner : 사용자이며 정보 제공자이기도 하기 때문에 Resource Owner라고함.

  • Client : Resource Owner를 대신하여 보호된 리소스에 액세스(접근)하는 애플리케이션이다.

  • Local Server : Client의 요청을 수락하고 응답할 수 있는 서버이다. -> ex) 백엔드 서버

  • Resource Server : 사용자의 정보를 저장하고 있는 서버이다.

  • Authorization Server : 인증을 담당하고 있는 서버로 Access Token을 발급하는 인증 서버이다. -> (일반적으로 이 녀석이 권한 부여 코드를 Local Server나 client에게 주고 다시 Local Server나 client는 그 코드로 다시 accesstoken을 이 녀석에게 요청함)

  • Authorization Code : Authorization Grant(-> 권한 방식 중 하나)의 한 타입으로 Access Token을 발급받기 위한 Code를 의미함.

  • Access Token : 보호된 리소스에 액세스(접근)하는 데 사용되는 인증 토큰. -> 이 Access Token으로 Resource Server에 접근할 수 있다.

  • Refresh Token : 발급받은 Access Token이 만료될 시 Refresh Token을 통해 새로운 Access Token을 받급받을 수 있다.

용어

  • Authentication (인증) : 인증, 접근 자격이 있는지 검증하는 단계.

  • Authorization (인가) : 리소스에 접근할 권한을 부여하고 리소스 접근 권한이 담긴 Access Token을 제공함.

  • Access Token : 리소스 서버에게서 리소스 소유자의 정보를 획득할 때 사용되는 만료 기간이 있는 Token.

  • Refresh Token : Access Token이 만료될 때, 다시 재발급 받기위한 용도로 사용되는 Token.**

권한 부여 방식

OAuth 2.0 프로토콜에서는 다양한 클라이언트 환경에 적합하도록 권한 부여 방식에 따른 프로토콜을 4가지 종류로 구분하여 제공하고 있다.
우선 한가지 방법에대해 알아보았다.

Authorization Code Grant Type - 권한 부여 승인 코드 방식

Authorization Code를 받아 Authorization Code를 통해 Access Token을 받는 방식을 말한다.
이 방식은 Access Token이 사용자나 브라우저에 표시되지 않는다는 것을 의미하므로 Access Token이 다른 사람에게 누출될 위험이 줄어든다.

구글링하다 보인 글에서 나온 이미지를 첨부하겠다.
->

권한 부여 승인 요청시 response_typecode로 지정하여 요청함.
이후 클라이언트는 Authorization(권한 서버)에서 제공하는 로그인 페이지를 브라우저에 띄워 출력함.
이 페이지를 통해 사용자가 로그인을 하면 Authorization(권한 서버)는 권한 부여 승인 코드 요청시 전달 받은 redirect_urlAuthorization Code를 전달함.
Authorization CodeAuthorization(권한 서버)에서 제공하는 API를 통해 Access Token으로 교환된다.

Refresh Token Grant Type

위의 Authorization Code Grant Type으로 Access Token을 발급 받은 후 Access Token이 만료된 경우 Refresh Token을 활용해 새로운 Access Token으로 교환하는 데 사용된다.
이를 통해 추가 상호 작용 없이 계속 유효한 Access Token을 가질 수 있다.

profile
개발 재밌다

0개의 댓글