프로젝트로 로그인 페이지를 구현하려고 하는데, OAuth
를 사용하기로 했다. 나같은 새싹은 처음 접했기 때문에 우선 공부한 이론을 정리하고자 한다.
(써먹으면서 추후 차차 추가하기로 하자!🐣)
인증을 위한 프로토콜의 한 종류이다. 보안된 리소스에 접근하기 위해 클라이언트에 권한을 제공(Authorization) 하는 프로세스를 단순화 하는 프로토콜이다.
우리가 어떤 사이트에 로그인할 때, 기존 소셜 계정(google, github, facebook, naver, kakao...)으로 로그인에서 사용된다. 위는 벨로그 로그인 예시이다.
접근 과정에 앞서 알아야 할 용어 정리
Resource Owner
: 액세스 중인 리소스의 User이다.Client
: Resource owner를 대신해 보호된 리소스에 액세스하는 응용프로그램이다.Resource server
: Client의 요청을 수락하고 응답할 수 있는 서버이다.Authorization server
: Client 및 Resource Owner를 성공적으로 인증한 후 Access token
을 발급하는 서버이다.Authorization grant
: Client가 Access token을 얻는 방법이다.Authorization code
: Access token을 발급받기 전에 필요한 code이다. client ID로 이 code를 받아온 후, client secret과 Authorization code를 이용해 Access token 을 받아온다.Scope
: 주어진 Access token
을 사용하여 액세스할 수 있는 리소스의 범위이다.예를 들어, OAuth 앱을 등록하면 홈페이지에서 볼 수 있듯이 Client ID, Client Secret을 받을 수 있다. 이를 활용하여 Access token
을 받아와 리소스에 접근 권한을 얻는다. 아래는 Github OAuth 예시이다.
아래는 과정을 정리한 순서이다.
참고자료
[Spring] OAuth2 소셜 로그인 가이드 : https://deeplify.dev/back-end/spring/oauth2-social-login
생활코딩 OAuth : https://opentutorials.org/course/3405/22004