# 구글 OAuth 2.0 서비스 등록
## 미션
---
구글 로그인을 위해 구글 클라우드 프로젝트를 생성하고,

해당 프로젝트를 스프링 부트에 설정하시오.

## 개념
---
#### ⭐️ 스프링 시큐리티란?
사용자의 "인증" 및 "권한 부여" 위한 프레임워크! 바로 스프링 시큐리티다. 이를 통해, 특정 URL에 접근을 허가 또는 불허 할 수 있다.
#### ⭐️ 소셜 로그인이란?
요즘 대부분의 서비스들이, 소셜 로그인을 제공 한다. 왜일까? 서로 윈윈이기 때문이다.
먼저, 🥇"사용자"는 회원 가입으로 인한 낭비(시간/스트레스)가 없다. 🥈"서비스 제공자"는 회원 가입/이메일 인증/비빌번호 변경 등의 개발을 하지 않아도 된다. 🥉"소셜 공급자"는 사용자의 정보(취향/구매 등)를 분석하여, 좋은 비즈니스 모델을 꾀할 수 있다.
#### ⭐️ OAuth 2.0 이란?
이러한 소셜 로그인 기능은 다양한 "공급자"들이 존재한다. 생각보다 많아 골치가 아프다. 이들을 묶어 표준화 한 것, 바로 OAuth(Open Authentication)이다. OAuth는 현재 2.0 버전까지 나와있다.
대표적인 OAuth 공급자(Provider)로는 Google, Facebook, Apple, 네이버, 카카오 등이 있다. 이들을 사용하려면, 먼저 공급자들에게 "서비스 제공자"로 등록 해야한다.
## 튜토리얼
---
#### ⭐️ 구글 클라우드 플랫폼
1) 접속: "https://console.cloud.google.com/"에서 새 프로젝트 생성 클릭

2) 프로젝트 생성:

3) API 및 서비스 설정(1): "OAuth 동의 화면 구성"

4) API 및 서비스 설정(2): "OAuth 2.0 클라이언트 ID" 만들기

5) 생성 결과 확인

#### ⭐️ 스프링 부트 설정
6) 설정 파일 생성: "application-oauth.yaml" (오타 조심!)

```
spring:
security:
oauth2:
client.registration.google:
client-id: 8xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxt.com
client-secret: XfxxxxxxxxxxxxxxxxxxxxxxxxYx_
scope: email, profile
```
7) .gitignore 설정: 보안 파일, 깃 업로드 금지를 위함 (참조: https://jojoldu.tistory.com/168)

8) 설정 파일 연동: "application.yaml" (참조: https://coding-start.tistory.com/350)

#### ⭐️ 깃허브 확인
8) 커밋 & 푸시: 푸시 후, 업로드 잘 막혔는지 확인(application-oauth.yaml은 업로드 되면 안됨)

## 훈련하기
---
- 스프링 시큐리티란 무엇인지 조사하시오.(https://sjh836.tistory.com/165)
## 면접 질문
---
- profile이란 무엇이고, 왜 씀?
- gitignore 무엇이고, 왜 씀?