인터넷을 이용하다 보면 최근에는 대부분의 사이트에서 카카오톡으로 로그인, 네이버로 로그인 등의 서비스를 지원을 한다. 이때 사용되는 프로토콜이 OAuth 2.0 이라는 프로토콜인데, OAuth 는 위키에서 다음과 같은 의미를 가지고 있다.
OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.
간단히 말하면 특정 사이트의 아이디 비밀번호 입력 없이, 신뢰 가능한 다른 사이트들의 정보를 제공함으로써 회원 서비스를 이용하게 해줄 때 사용되는 표준이다.
티스토리에서 카카오톡으로 로그인 하는 경우를 예를 들어 설명해 보겠다.
OAuth 2.0 참여자
1. Resource Server : 유저 정보를 가지고 있는 서버( 카카오 서버 )
2. Resource Owner : 유저 정보의 소유권자 ( 카카오 가입자 )
3. Clinet : 유저 정보를 요구하는 웹사이트, 어플리케이션 ( 티스토리 )
OAuth 2.0 과정
1. Client 등록
Resource Server 에 인증 정보 요청을 할 Client 를 등록을 한다. 이 과정에서 아래 3가지 정볼르 전달받는다.
- Client ID : Resource Server 에서 Client 를 구분하는 식별자
- Client Secret : Client ID 에 대한 비밀키.
- Authorized redirect URL : Authorization Code 를 전달받을 리다이렉트 주소
2. Resource Server 인증 후 Client 에게 액세스 토큰전달
Resource Server 가 인증을 거치면( 카카오 로그인 후 완료 ), Client 에게 Authorized redirect URL 로 Authorization Code 를 전달해 준다. Client 는 이 Code 와 Client ID, Client Secret, Redirect URL 값을 Resource Server 에게 전달해 줌으로써 Access Token 을 전달받는데, Client 에서는 이 Access Token 을 Client 의 서버에 유지하며 유저의 로그인 상태를 유지한다. 이때 등록한 Redirect URL 이 아니면 Resoure Server 는 인증을 거부하게 된다.
3. Access Token 사용
이제 Client 웹사이트나 어플리케이션에서는 전달받은 Access Toekn 을 유지하고, 유저 인증정보가 필요한 HTTP API 요청에 전달받은 Access Token 을 전달함으로써 인증이 필요한 API 를 사용하게 된다.
4. Refresh Token
OAuth 를 지원하는 Resourece Server 마다 방법은 다르지만, Refresh Token 을 Client 에게 전달해 줌으로써 사용 만료기한이 존재하는 Access Token 을 새로 받을 수 있도록 한다. 클라이언트에서는 Access Token 이 만료하게 되면 Refresh Token 을 Resource Server 에 다시 전달함으로써 새로운 Access Toekn 을 받게된다.
'개발자의 길' 카테고리의 다른 글
[Spring] 김영한의 스프링 핵심 원리 - 기본편 정리 (0) | 2023.07.16 |
---|---|
[Network] OSI 7 Layer 정리 (0) | 2023.01.30 |
[Backend] HTTP 기초 지식 정리 (0) | 2022.05.01 |
[Python3] Decorator(장식자) 란 무엇인가? (0) | 2022.03.06 |
[Python3] Nested function, First class function, Closure function 이란 무엇인가? (0) | 2022.03.06 |