오늘은 Spring Security에 공부하다가 알게 된 OAuth2 프로토콜의 개념과 Google Cloud 프로젝트를 등록하는 포스팅을 해보겠습니다.
OAuth2 란?
OAuth 2.0은 웹 및 모바일 애플리케이션에서 사용자 인증 및 인가를 처리하기 위한 개방형 표준 프로토콜입니다. 이 프로토콜은 클라이언트 애플리케이션이 인증 및 인가 서비스 제공자(예: 구글, 페이스북, 트위터)의 리소스에 접근할 수 있는 권한을 얻기 위해 사용됩니다.
OAuth 2.0은 다음과 같은 역할을 수행하는 다양한 주제로 구성됩니다.
- 리소스 소유자(Resource Owner) : 보호된 리소스에 액세스하려는 사용자입니다. 일반적으로 웹 애플리케이션의 엔드 사용자를 의미합니다.
- 클라이언트(Client) : 리소스 서버에 액세스하려는 애플리케이션입니다. 클라이언트는 리소스 서버로부터 사용자의 데이터를 안전하게 받아오기 위해 OAuth 2.0 프로토콜을 사용합니다.
- 인증 서버(Authorization Server) : 클라이언트에게 액세스 토큰을 발급하고 인증 및 인가 프로세스를 처리하는 서버입니다. 사용자의 동의를 통해 클라이언트에게 리소스에 대한 권한을 부여합니다.
- 리소스 서버(Resource Server) : 보호된 리소스를 호스팅 하고, 클라이언트에게 액세스 권한이 부여된 경우 클라이언트에게 리소스를 제공하는 서버입니다.
OAuth 2.0 프로토콜은 다음과 같은 주요 단계로 구성됩니다.
- 클라이언트가 인증 서버에게 인가 코드(Authorization Code)를 요청합니다.
- 사용자는 인증 서버로 이동하고. 클라이언트가 요청한 권한을 허용할 것인지 사용자에게 확인을 받습니다.
- 사용자가 동의하면, 인증 서버는 인가 코드를 발급합니다.
- 클라이언트는 액세스 토큰을 사용하여 리소스 서버에 액세스하고, 사용자의 리소스를 요청합니다.
- 리소스 서버는 액세스 토큰을 검증하고, 클라이언트에게 요청된 리소스를 제공합니다.
그럼 구글 Cloud 프로젝트 생성 하려면 어떻게 해야할까??
TIP)
구글 로그인 기능 구현할 때 Authentication 객체를 사용하여 구현할 수 있습니다.
Authentication 객체에 대해서 궁금하신 분들은 이전 포스팅을 보고 오시면 이해하기 더 편합니다!
Google은 OAuth2.0 프로토콜을 사용하여 사용자 인증을 처리하므로, 인증 및 인가를 위해 Authentication 객체를 사용할 수 있습니다.
구글 Cloud 프로젝트를 구현하는 일반적인 절차는 다음과 같습니다.
Google API Console
해당 페이지에서 프로젝트를 생성하고, OAuth 2.0 클라이언트 ID를 발급받습니다.
프로젝트 생성하는 팝업창은 Google Cloud 로고 옆에 카테고리를 클릭하시면 나옵니다.
새 프로젝트 버튼을 클릭하시면 프로젝트 설정 페이지로 이동합니다.
프로젝트 이름만 설정하고 만들기 버튼을 클릭합니다.
프로젝트를 생성하고 구글 OAuth 클라이언트를 사용하기 위해서 OAuth 동의화면 탭을 클릭하여 설정 화면으로 이동합니다.
설정 화면에 들어오시면, 앱 이름, 이메일, 로고를 입력하고, 나머지는 무시하고 저장 후 계속 버튼을 눌러서 만들어줍니다.
생성하고 다시 페이지 클릭해서 들어오시면 위 사진처럼 나옵니다.
다음으로 사용자 인증 정보 페이지로 이동해서 클라이언트 ID와 클라이언트 보안 비밀번호를 저장해 둡니다.
마치며
클라우드 프로젝트 생성 하는 방법을 알아봤습니다.
다음 포스팅은 이어서 구글 로그인 기능 구현을 해보겠습니다.
'[ JAVA ] > JAVA Spring Security' 카테고리의 다른 글
[ Spring Boot ] Spring Security - 회원가입 및 로그인 (1) | 2023.09.26 |
---|---|
[ Spring Boot ] Spring Security - 기본 개념 및 예제 (0) | 2023.09.25 |
[ Spring Boot ] OAuth2 - NAVER 소셜 로그인 (0) | 2023.06.04 |
[ Spring Boot ] OAuth2 - Google 소셜 로그인 (1) | 2023.06.02 |
[ Spring ] Security 개념 (0) | 2023.05.30 |