[프로젝트] Spring Security + OAuth + JWT + Redis를 활용한 로그인 및 회원가입 구현 (10) - OAuth 로그인을 위한 사전 단계

김찬미·2024년 7월 22일
0
post-thumbnail

프로젝트 전체 코드: https://github.com/kcm02/JWT_OAuth_Login.git

🪪 OAuth란?

OAuth(Open Authorization)는 인터넷 사용자들이 비밀번호를 제공하지 않고도 타사 서비스 제공자에게 자신의 정보에 대한 접근 권한을 부여할 수 있는 안전한 인증 표준이다. 이 매커니즘은 여러 기업들에 의해 사용되는데, 이를테면 Google, Kakao, Naver 등이 있으며 사용자들이 타사 애플리케이션이나 웹사이트의 계정에 관한 정보를 공유할 수 있게 허용한다.

쉽게 설명하자면, 서비스를 이용하는 유저의 타사 플랫폼 정보에 접근하기 위한 권한을 타사 플랫폼으로부터 위임받는 것이다.

🚹 OAuth 역할

OAuth는 주로 세 가지 역할로 구성된다.

  • 리소스 소유자 (Resource Owner): 서비스를 이용하고 있는 사용자

  • 클라이언트 (Client): 리소스 소유자의 정보를 사용하려는 애플리케이션

  • 인증 서버 (Authorization Server): 사용자의 인증을 처리하고, 클라이언트(애플리케이션)가 Access Token을 요청할 때 Authorization Code를 발급한다.

  • 리소스 서버 (Resource Server): Access Token을 사용하여 보호된 리소스에 접근할 수 있도록 한다.

💡 인증 서버와 리소스 서버
OAuth 인증 과정에서의 인증 서버와 리소스 서버는 모두 외부 서비스 제공자(Google, Naver 등)의 서버이다. 이 서버들은 사용자 인증 및 리소스 접근을 관리한다.

🔄️ OAuth 인증 과정

  1. 인증 요청: 클라이언트(애플리케이션)가 사용자를 대신하여 인증 서버에 인증을 요청한다.

  2. 인증 승인(Authorization Code 발급): 인증 서버는 사용자의 인증 승인을 받은 후 클라이언트에게 Authorization Code를 반환합니다.

  3. Access Token 요청: 클라이언트는 Authorization Code를 사용하여 인증 서버에 Access Token을 요청한다.

  4. Access Token 발급: 인증 서버는 클라이언트에게 Access Token을 발급한다.

  5. 리소스 요청: 클라이언트는 Access Token을 사용하여 리소스 서버에 보호된 리소스를 요청한다.

  6. 리소스 응답: 리소스 서버는 요청된 리소스를 클라이언트에게 반환한다.

이를 통해 사용자는 자신의 비밀번호를 직접 제공하지 않고도 안전하게 타사 애플리케이션에 자신의 정보에 대한 접근 권한을 부여할 수 있다.

따라서, 사용자가 OAuth를 통해 로그인할 때 클라이언트 애플리케이션은 인증 서버와 리소스 서버를 거쳐야 하며, 클라이언트 애플리케이션을 개발하는 개발자는 이들 서버와 통신하도록 애플리케이션을 구성해야 한다.


✅ 외부 플랫폼에서의 OAuth 설정

OAuth에 대한 전반적인 흐름과 개념을 알아보았으니 이제 실제적으로 Google, Naver, Kakao에서 OAuth를 설정하는 법에 대해 알아보자.

🔵 Google OAuth 설정

1) 구글 클라우드에서 프로젝트 생성하기

  1. Google API Console에 접속: Google API Console에 접속한다.

  2. 프로젝트 만들기 클릭: '프로젝트 만들기'를 클릭한다.

  3. 새 프로젝트 생성: 프로젝트 이름을 입력한 후 프로젝트를 생성한다.

2) OAuth 동의 화면 생성하기

  1. OAuth 동의 화면 설정: OAuth 동의 화면에서 ‘외부’를 선택하고 '[만들기]'를 클릭한다.

  2. OAuth 동의 화면에서 값 입력: OAuth 동의 화면에서 애플리케이션의 이름, 이메일, 허용된 도메인 등을 입력하고 설정을 완료한다.

3) OAuth 클라이언트의 ID와 비밀번호 만들기

  1. 사용자 인증 정보 만들기: 왼쪽 메뉴에서 ❶ [사용자 인증 정보] → ❷ [사용자 인증정보 만들기] → [OAuth 클라이언트 ID]를 눌러서 인증 정보 설정 화면으로 이동한다.
  1. OAuth 클라이언트 ID 생성:
    - 애플리케이션 유형을 선택하고(예: 웹 애플리케이션) 서버 주소와 리디렉션 URL을 입력한다.
    - 설정을 마치면 만들기를 클릭해 생성한다.

  2. 보안 유지: 클라이언트 보안 비밀번호는 절대로 유출되면 안 되니 주의해야 한다.


🟢 Naver OAuth 설정

1) 애플리케이션 등록

  1. Naver 개발자 센터에 접속: Naver 개발자 센터에 접속한다.

  2. 애플리케이션 등록: '애플리케이션 등록'을 클릭한다.

  3. 사용 API 설정: '사용 API'에서 '네이버 아이디로 로그인'을 선택하고 이용할 권한을 설정한다.

  4. 서비스 URL 설정: 서비스의 환경을 선택한 후 서비스 URL과 콜백 URL을 설정한다.

2) 클라이언트 ID와 비밀번호 확인

  1. 보안 유지: 클라이언트 ID와 시크릿 키를 확인한다. 이때, 이 정보들은 유출되면 안 되는 정보이므로 보안에 신경써야 한다.

🟡 Kakao OAuth 설정

1) 애플리케이션 등록

  1. Kakao Developers에 접속: Kakao Developers에 접속한다.

  2. 애플리케이션 등록: '내 애플리케이션'에서 '애플리케이션 추가하기'를 클릭하고 필요한 정보를 입력합니다.

  1. 플랫폼 설정: '플랫폼'에서 '웹'을 선택하고 사이트 도메인을 입력한다.
  2. Redirect URI 설정: 'Redirect URI'를 설정한다.

2) 클라이언트 ID와 비밀번호 확인

  1. 클라이언트 ID 확인: 사진 속 REST API 키를 확인한다.

  2. 시크릿 키 확인: 사진 속 Client Secret 키를 기억한다. 이때, ID와 시크릿 키는 보안을 유지해야 한다.


마치며

OAuth는 사용자 비밀번호를 직접 제공하지 않고도 타사 서비스를 통해 안전하게 접근 권한을 부여하는 인증 표준 기능이다. 여기선 예시로 Google, Naver, Kakao를 사용했지만 FaceBook, X 등 다양한 플랫폼을 활용할 수 있으니 프로젝트에 맞게 활용하면 된다.

현재 많은 웹 사이트에서 자체 로그인뿐만 아니라 OAuth 로그인도 지원하는 만큼 웹 개발자라면 OAuth를 잘 활용할 줄 알아야 한다. 열심히 공부하자!

profile
백엔드 개발자

0개의 댓글

관련 채용 정보