- [Spring-boot]스프링시큐리티+OAuth2 소셜로그인 (3) 목차
구글(Google)
1. 구글 디펠로퍼 콘솔에 접속해서 새 프로젝트를 생성합니다.
2. 프로젝트를 생성할 때 정보를 작성합니다.
3. 왼쪽 사이드바의 사용자 인증 정보에서 사용자 인증 정보 만들기 > OAuth2 클라이언트 ID 를 클릭합니다.
4. OAuth 클라이언트 ID 만들기 창에서 동의 화면 구성을 클릭합니다.
5. OAuth 동의화면에서 애플리케이션 필요한 정보를 입력한 후 저장합니다.
6. 애플리케이션 유형 중 웹 애플리케이션을 선택한 다음 아래와 같이 입력한 후 저장합니다.
*승인된 리디렉션 URI (URI는 URL이 아닙니다. URI가 상위개념이라고 생각하시면 됩니다.)
ex)URI는 URL,URN의 상위 개념입니다.
URI는 동물이라고 비유하면 URL(강아지), URN(다람쥐)라고 생각하시면 됩니다.
- 서비스에서 파라미터로 인증 정보를 주었을 때 인증이 성공하면 구글에서 리다이렉트할 URL입니다.
- 스프링 부트 2 버전의 시큐리티에서는 기본적으로 {도메인}/login/oauth2/code/{소셜서비스코드}로 리다이렉트 URL을 지원하고 있습니다.
- 사용자가 별도로 리다이렉트 URL을 지원하는 Controller를 만들 필요가 없습니다.
- 현재는 개발 단계이므로 http://localhost:8080/login/oauth2/code/google 로 등록합니다.
- AWS 서버에 배포하게 되면 localhost 외에 추가로 주소를 추가해야 합니다.
7. 아래와 같이 OAuth 정보가 설정됬다는 창이 뜨면서 구글 OAuth 로그인 인증을 할 수 있는 준비가 완료됬습니다.
application-oauth등록
Spring boot에서 다음과 같이 클라이언트 ID와 보안비밀 (Client Secret)을 등록합니다.
1
2
3
|
spring.security.oauth2.client.registration.google.scope=profile,email
|
scope=profile,email 과 같이 설정한 이유는
- 기본 값이 openid,profile,email이기 때문입니다.
- 강제로 profile,email을 scope에 등록한 이유는 만일 scope를 명시하지 않으면 기본값으로 모두 등록되어 openid 값이 Open Id Provider로 인식되기 때문입니다
(이렇게 되면 구글에서만 지원하는 OpenId Provider로인하여 그렇지 못한 서비스들 카카오,네이버등을 같이 설정할때에 문제가 발생합니다. 이럴경우에는 OAuth2Service를 분리하여 만들어야 하는 번거로움이 있습니다.)
스프링 부트는 application-xxx.properties 로 만들면 xx라는 이름의 profile이 생성되어 이를 통해 관리할 수 있습니다.
즉,profile=xxx으로 호출하면 해당 properties의 설정들을 가져올 수 있습니다. (호출하는 방식은 여러가지입니다.)
(여기에선 application.properties에서 포함하는 방식으로 구성하겠습니다.)
spring.profiles.include=oauth
Spring에서 사용하는 profile과 Maven/Gradle에서 사용하는 profile은 뭐가 다른가요?
-Maven/Gradle 의 profile : build 시점에 해당 리소스를 선별적으로 패키지에 포함 시키고자 할 때 이용하는 것
-Spring 의 prifile : 소스의 변함은 없고 profile에 따라 프레임워크가 선별적으로 사용하는 것
참고
'Spring > Spring boot' 카테고리의 다른 글
[springboot]application.properties란? (0) | 2020.08.17 |
---|---|
[Springboot]@Builder란? (0) | 2020.02.22 |
[Spring-boot]스프링시큐리티+OAuth2 인증 (2) (0) | 2020.02.11 |
[Spring-boot]스프링시큐리티+OAuth1 인증 (1) (0) | 2020.02.11 |
[Springboot]JPA란? (0) | 2020.02.06 |