OAuth란?
Open Authorization. 서비스에서 제한적으로 권한을 요청해 사용 할 수 있는 키를 발급해주는 것을 말한다. 기존에는 다른 서비스의 리소스를 사용하기 위해서 사용자의 ID와 PW를 직접 입력받아 사용했으며, 이에따라 아래와 같은 문제가 필연적으로 발생했다
- 사용자: 신뢰할 수 없는 서비스에 자신의 ID와 PW를 공개
- 현재 서비스: 보안 문제에 대한 책임
- 다른 서비스: 현재 서비스를 신뢰할 수 없다
이와 같은 문제를 해결하기 위해 OAuth가 탄생하였다.
주요 용어
- Resource Owner: 사용자
- Client: Resource Server의 데이터를 사용하려고 하는 서비스
- Authorization Server: Client가 Resource Server를 사용할 수 있도록 인증토큰을 발행해주는 서버 (인증 서버)
- Resource Server: OAuth 서비스를 제공하고 자원을 관리하는 서버 (신뢰할 수 있는 구글이나 네이버와 같은 서비스)
인증 흐름
토큰
- Access Token 토큰 요청 절차를 성공적으로 수행하면 클라이언트에게 Access Token이 문자열 형태로 발급되며, 클라이언트는 이를 저장 및 사용하여 필요한 데이터를 Resource Server로부터 가져올 수 있다.
- Refresh Token Access Token은 사용시간이 제한되어 있으므로, 만료될 때 Refresh Token을 사용하여 새로운 Access Token을 받아온다. 보통 Access Token을 발급받을때 함께 발급해준다.
일단 전체적인 개념만 공부하고, 인증 종류와 구현에 대해서는 직접 구현할때 알아보기로.