요즘 대부분의 웹/앱 서비스를 사용하면 필수로 만나게 되는 기능이 있다. 바로 해당 서비스의 사이트에 회원가입하지 않고도 다른 서비스의 계정을 가져와 사용할 수 있도록 하는 기능이다. 로그인을 하려고 하면 하단에 '카카오 계정으로 로그인', '네이버 계정으로 로그인' 등과 같이 버튼만 클릭하면 간편하게 로그인할 수 있는 기능을 쉽게 접할 수 있다. 오늘은 그 기능을 프로젝트에 적용하기 위해 방법들을 찾아봤다.
위와 같이 타 서비스의 계정을 사용해서 인증하는 방식을 OAuth 2.0 인증 방식이라고 한다.
OAuth2.0
OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로써 사용되는, 접근 위임을 위한 개방형 표준이다. (위키백과)
간단히 말해 자신의 서비스에서 사용자 인증을 구글이나 카카오의 계정으로 사용자를 인증하려고 할 때, OAuth를 바탕으로 외부 서비스(google, kakao 등등)의 특정 자원을 접근하고 사용할 수 있다.
OAuth 2.0 프로토콜을 구성하는 4가지의 역할
Resource owner(자원 소유자) : Resource server(구글, 페이스북, 카카오 등)의 계정을 소유하고 있는 사용자를 의미한다.
Resource Server : Client가 제어하고자 하는 자원을 보유하고 있는 서버를 의미한다.
Client : Resoure Server에 접속해서 정보를 가져오고자 하는 클라이언트를 의미한다.
Authorization Server : 권한 서버, 인증/인가를 수행하는 서버로 클라이언트의 접근 자격을 확인 하곡 Acces Token을 발급하여 권한을 부여하는 역할을 수행한다.
Authorization Code Grant
OAuth 2.0의 4가지 인증 방법 중 Authorization Code Grant 방식을 살펴보자
설명 | |
Authorization Code Grant | - Client가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용 - 리소스 접근을 위해, Authorization Server에서 받은 권한 코드로 리소스에 대한 액세스 토큰을 받는 방식 - 다른 인증 절차에 비해 보안성이 높기에 주로 사용된다 |
- 클라이언트가 파리 미터로 클라이언트 ID, 리다이렉트 URI, 응답 타입을 code로 지정하여 권한 서버에 전달합니다. 정상적으로 인증이 되면 권한 코드 부여 코드를 클라이언트에게 보낸다.
- 성공적으로 권한 부여 코드를 받은 클라이언트는 권한 부여 코드를 사용하여 access token을 권한 서버에 추가로 요청합니다. 이때 전달받은 redirect_url로 Authorization Code를 전달한다.
- Authorization Code는 권한 서버에서 제공하는 API를 통해 Access Token으로 교환된다.
- 마지막으로 받은 access token을 사용하여 리소스 서버에 사용자의 데이터를 보낸다.
오늘은 OAuth2.0에 대해서 알아봤는데 내일은 카카오 로그인, 네이버 로그인을 직접 구현해보자
'성장이야기 > TIL' 카테고리의 다른 글
221127 TIL 검색 기능 구현 중 만난 문제 (pagination) (0) | 2022.11.27 |
---|---|
221126 TIL 게시판에서 원하는 게시물 찾기 (0) | 2022.11.26 |
221124 TIL axios.delete 요청 시 데이터 전달하기 (0) | 2022.11.24 |
221123 TIL columnDefinition으로 기본값 설정 (0) | 2022.11.23 |
221122 TIL 마이 페이지 구현하기 (0) | 2022.11.22 |