프로젝트 전체 코드: https://github.com/kcm02/JWT_OAuth_Login.git
OAuth(Open Authorization
)는 인터넷 사용자들이 비밀번호를 제공하지 않고도 타사 서비스 제공자에게 자신의 정보에 대한 접근 권한을 부여할 수 있는 안전한 인증 표준이다. 이 매커니즘은 여러 기업들에 의해 사용되는데, 이를테면 Google
, Kakao
, Naver
등이 있으며 사용자들이 타사 애플리케이션이나 웹사이트의 계정에 관한 정보를 공유할 수 있게 허용한다.
쉽게 설명하자면, 서비스를 이용하는 유저의 타사 플랫폼 정보에 접근하기 위한 권한을 타사 플랫폼으로부터 위임받는 것이다.
OAuth는 주로 세 가지 역할로 구성된다.
리소스 소유자 (Resource Owner
): 서비스를 이용하고 있는 사용자
클라이언트 (Client
): 리소스 소유자의 정보를 사용하려는 애플리케이션
인증 서버 (Authorization Server): 사용자의 인증을 처리하고, 클라이언트(애플리케이션)가 Access Token
을 요청할 때 Authorization Code
를 발급한다.
리소스 서버 (Resource Server): Access Token
을 사용하여 보호된 리소스에 접근할 수 있도록 한다.
💡 인증 서버와 리소스 서버
OAuth 인증 과정에서의 인증 서버와 리소스 서버는 모두 외부 서비스 제공자(Google, Naver
등)의 서버이다. 이 서버들은 사용자 인증 및 리소스 접근을 관리한다.
인증 요청: 클라이언트(애플리케이션)가 사용자를 대신하여 인증 서버에 인증을 요청한다.
인증 승인(Authorization Code 발급): 인증 서버는 사용자의 인증 승인을 받은 후 클라이언트에게 Authorization Code
를 반환합니다.
Access Token 요청: 클라이언트는 Authorization Code
를 사용하여 인증 서버에 Access Token
을 요청한다.
Access Token 발급: 인증 서버는 클라이언트에게 Access Token
을 발급한다.
리소스 요청: 클라이언트는 Access Token
을 사용하여 리소스 서버에 보호된 리소스를 요청한다.
리소스 응답: 리소스 서버는 요청된 리소스를 클라이언트에게 반환한다.
이를 통해 사용자는 자신의 비밀번호를 직접 제공하지 않고도 안전하게 타사 애플리케이션에 자신의 정보에 대한 접근 권한을 부여할 수 있다.
따라서, 사용자가 OAuth를 통해 로그인할 때 클라이언트 애플리케이션은 인증 서버와 리소스 서버를 거쳐야 하며, 클라이언트 애플리케이션을 개발하는 개발자는 이들 서버와 통신하도록 애플리케이션을 구성해야 한다.
OAuth
설정OAuth에 대한 전반적인 흐름과 개념을 알아보았으니 이제 실제적으로 Google
, Naver
, Kakao
에서 OAuth를 설정하는 법에 대해 알아보자.
Google OAuth
설정Google API Console에 접속: Google API Console에 접속한다.
프로젝트 만들기 클릭: '프로젝트 만들기'를 클릭한다.
새 프로젝트 생성: 프로젝트 이름을 입력한 후 프로젝트를 생성한다.
OAuth 동의 화면 설정: OAuth 동의 화면에서 ‘외부’를 선택하고 '[만들기]'를 클릭한다.
OAuth 동의 화면에서 값 입력: OAuth 동의 화면에서 애플리케이션의 이름, 이메일, 허용된 도메인 등을 입력하고 설정을 완료한다.
OAuth 클라이언트 ID 생성:
- 애플리케이션 유형을 선택하고(예: 웹 애플리케이션) 서버 주소와 리디렉션 URL을 입력한다.
- 설정을 마치면 만들기를 클릭해 생성한다.
보안 유지: 클라이언트 보안 비밀번호는 절대로 유출되면 안 되니 주의해야 한다.
Naver OAuth
설정Naver 개발자 센터에 접속: Naver 개발자 센터에 접속한다.
애플리케이션 등록: '애플리케이션 등록'을 클릭한다.
사용 API 설정: '사용 API'에서 '네이버 아이디로 로그인'을 선택하고 이용할 권한을 설정한다.
서비스 URL 설정: 서비스의 환경을 선택한 후 서비스 URL과 콜백 URL을 설정한다.
Kakao OAuth
설정Kakao Developers에 접속: Kakao Developers에 접속한다.
애플리케이션 등록: '내 애플리케이션'에서 '애플리케이션 추가하기'를 클릭하고 필요한 정보를 입력합니다.
클라이언트 ID 확인: 사진 속 REST API
키를 확인한다.
시크릿 키 확인: 사진 속 Client Secret
키를 기억한다. 이때, ID와 시크릿 키는 보안을 유지해야 한다.
OAuth는 사용자 비밀번호를 직접 제공하지 않고도 타사 서비스를 통해 안전하게 접근 권한을 부여하는 인증 표준 기능이다. 여기선 예시로 Google
, Naver
, Kakao
를 사용했지만 FaceBook
, X
등 다양한 플랫폼을 활용할 수 있으니 프로젝트에 맞게 활용하면 된다.
현재 많은 웹 사이트에서 자체 로그인뿐만 아니라 OAuth 로그인도 지원하는 만큼 웹 개발자라면 OAuth를 잘 활용할 줄 알아야 한다. 열심히 공부하자!