코드스테이츠 39일차 [ OAuth 2.0 ]

Lumi·2021년 10월 28일
0
post-thumbnail

OAuth

  • 소셜 로그인 인증방식을 말한다.

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

  • 단순히 말하면 인증을 중개 해주는 메커니즘이다.

소셜 로그인이 되어있는 사이트에서 소셜 로그인으로 접속을 한다고 생각을 해보자

  • facebook으로 가정을 하겠다.

그럼 사용자는 facebook에 연결을 할떄 어떤 권한을 허용할 것인지를 선택할 수 있고 그후 facebook에서 사이트에 엑세스 토큰을 보내주게 된다.

이후 웹에서 받은 액세스 토큰을 이용하여 페이스북에 요청을 하게 되고 페이스북은 웹 서버에 정보를 전달하게 된다

  • 우리가 소셜 로그인을 사용하는 이유는 몇가지 있지만 그중 가장 큰 요인은 웹을 믿지 않기 떄문이다(편리성도 잇다)

OAuth에서 꼮 알아야 할 용어

Resource Owner : 액세스 중인 리소스 유저
- 사용자

Client : Resource Owner를 대신하여 보호된 리소스에 액세스하는 응용프로그램
- 앱

Resource server : Client의 요청을 수락하고 응답할 수 있는 서버
- facebook

Authorization server : Resource server가 액세스 토큰을 발급하는 서버
- facebook

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

Authorization code : access token을 발급받기 전에 필요한 code
- 클라이언트 Id, 클라이언트 Secret

Access token : 보호된 리소스에 액세스하는 데 사용되는 credentials(자격)
- 권한을 나타내는 문자열 타입

Scope : 주어진 액세스 토큰을 사용하여 액세스할 수 있는 리소스 범위

Grant type종류

  • Client가 액세스 토큰을 얻는 방법
Authorization Code Grant type
- 액세스 토큰을 받아오기 위해 먼저 Authorization code를 받아 액세스 토큰과 교환하는 방법
- 가장 일반적으로 사용되는 유형이다.
- 그냥 토큰만을 받게되면 보안성이 떨어지기 떄문에 보안성을 위해서 사용한다.

> 사용자가 인증 권한을 수락을 하게되면 바로 웹에 토큰을 주는 것이 아니라 코드를 준다.
> 이후 웹에서 바로 코드를 다시 facebook에 전송을 하고 토큰을 받아오게 된다.
> 이후 토큰을 통해서 서버에 접속을 하는 것이다.

  • 이런식의 순서로 작동이 되게 된다.
Refresh Token Grant Type
- 액세스 토큰 또한 일정 시간이 지나면 만료가 된다(자동 로그아웃)
- 그렇게되면 다시 소셜 로그인 해야하기 떄문에 그 과정을 넘기기 위해 사용하는 방법이다.
- Access token보다 Refresh Token의 사용기간이 좀더 길기 떄문에 가능한 방법
- 서버의 서비스마다 다르기 떄문에 서버를 뜯어봐야 알수가 있다.

> 기존에 로그인했던 사용자가 다시 소셜 로그인 요청을 하게 되면
> 액세스 토큰이 만료가 되었다는걸 인지하고 facebook에 새 토큰을 요청하고 새로운 토큰을 받아서 활용한다.
profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글