스프링 시큐리티에 구글 로그인을 연동해봅시다.
스프링 시큐리티에 대한 설명은 여기에서 확인하실 수 있습니다.
1. 구글 서비스 등록
하단의 구글 사이트로 이동해서 내가 만들 프로젝트 정보를 입력해주어야합니다.
https://console.cloud.google.com
구글 사이트에 들어가서 상단의 google cloud 오른쪽 버튼을 클릭해줍니다.
프로젝트 선택 창이 나오는데 여기서 새 프로젝트를 클릭해줍니다.
등록할 프로젝트 이름을 입력해주고 만들기를 클릭합니다.
해당 프로젝트로 들어와준 후 왼쪽의 햄버거 탭 클릭 -> API 및 서비스 -> 사용자 인증 정보에 들어가줍니다.
사용자 인증 정보 만들기 클릭 -> OAuth 클라이언트 ID 에 들어가줍니다.
동의 화면 구성을 클릭해줍니다.
User Type을 외부로 설정해주고 만들기를 클릭해줍니다.
앱 정보에 앱 이름과 사용자 지원 이메일을 입력해줍니다. 하단에 있는 개발자 연락처 정보도 입력해줍니다.
범위 추가 또는 삭제 버튼을 누른 후 email, profile, openid를 추가해주고 저장해줍니다.
사용자 인증 정보 -> 사용자 인증 정보 만들기 -> OAuth 클라이언트 ID 만들기에 들어가줍니다.
애플리케이션 유형을 웹 애플리케이션으로 선택해줍니다.
승인된 리디렉션 URI에 http://localhost:8080/login/oauth2/code/google 를 입력해줍니다.
스프링 부트 2 버전에서 소셜 로그인 기능을 구현할 때, 스프링 시큐리티는 기본적으로 OAuth 2.0 인증 과정을 관리해 주며, 인증 후 리다이렉트되는 URL을 자동으로 설정해 줍니다.
즉, {도메인}/login/oauth2/code/{소셜서비스코드} 형태로 리다이렉트 URL이 기본 제공되므로, 이를 처리하기 위한 별도의 컨트롤러를 만들 필요가 없습니다.
지금은 로컬 개발 환경에서 작업 중이므로 http://localhost:8080/login/oauth2/code/google과 같이 설정하면 됩니다.
이후 배포 단계에서 실제 도메인(예: AWS 서버 URL)로 서비스를 제공할 경우에는 해당 서버 주소를 리다이렉트 URL로 추가 설정해 주어야 원활하게 인증을 진행할 수 있습니다.
클라이언트 ID와 클라이언트 보안 비밀번호를 메모장에 저장해둡니다.
2. 스프링 시큐리티에 적용하기
server:
port: 8080
servlet:
context-path: /
encoding:
charset: UTF-8
enabled: true
force: true
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/security?serverTimezone=Asia/Seoul
username: root
password:
jpa:
hibernate:
ddl-auto: update #create update none
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
show-sql: true
security:
oauth2:
client:
registration:
google: # /oauth2/authorization/google
client-id: # 여기에 client-id를 입력해줍니다.
client-secret: # 여기에 client-secret을 입력해줍니다.
scope:
- email
- profile
해당 application.yml 을 설정해주시고 아래의 사이트에서 코드 다운받으면 됩니다.
https://github.com/Lee-YuGyeong/security
'WEB' 카테고리의 다른 글
[Spring Security] Session 기반 인증 방식 VS Token 기반 인증 방식 (1) | 2024.11.08 |
---|---|
[WEB] HttpServletRequest / ServletRequest (0) | 2024.10.28 |
[Spring boot] h2 연결하기 (0) | 2024.10.28 |
[Docker] 도커의 정의와 기본 명령어 (1) | 2023.11.13 |
HTTP header - referer (0) | 2023.04.23 |