[Springboot] Google 서비스 등록
in Study on Springboot
Google api를 사용하기 위한 서비스 등록
https://console.cloud.google.com/
여기로 들어간다.
들어가면 위와 같은 화면이 있다. 저 API는 이전에 이미 만들어 둔 API
원래라면 맨 처음에는 API 및 서비스로 생성해야한다. 사용자 인증정보로 가서 OAuth 클라이언트 생성
그럼 위와 같은 화면이 나오게 되며 사용자 인증 정보를 만들수 있게 된다.
이어지는 화면에서 애플리케이션 이름, Google API의 범위를 설정한다
범위는 email, profile, openid로 설정한다
애플리케이션 이름 : 구글 로그인 시 사용자에게 노출된 애플리케이션 이름
지원 이메일 : 사용자의 동의화면에서 노출될 이메일 주소.
Google API의 범위 : 등록할 구글 서비스에서 사용할 범위 목록. 기본값은 email/profile/openid이며, 여기서는 딱 기본범위만 사용. 이외의 다른 정보로 사용하고 싶으면 범위 추가버튼으로 추가.
아래에 승인된 리디렉션 URI가 있다.
서비스에서 파라미터로 인증정보 줄 시 인증 성공하면 구글에서 리다이렉트할 URI는
스프링 부트 2 버전의 시큐리티에선 기본적으로 {도메인}/login/oauth2/code/{소셜 서비스코드}로 리다이렉트 URL 지원
사용자가 별도로 리다이렉트 URL을 지원하는 Controller를 만들 필요가 없음. 시큐리티에서 이미 구현해둔 상태
현재는 개발단계이므로 http://localhost:8080/login/oauth2/code/google 로만 등록
-AWS서버에 배포하게 되면 localhost외에 추가로 주소를 추가해야 한다.
생성하면 클라이언트 정보를 볼수 있게 된다.
저 클라이언트 ID와 PW를 사용하게 된다.
application-oauth등록
당연하게도! 위의 id와 pw는 깃에 올라가선 안된다.
그래서 .gitignore을 이용해서 깃에 올라가는 것을 막아야 하고 application-aouth를 등록해준다.
spring.security.oauth2.client.registration.google.client-id=
spring.security.oauth2.client.registration.google.client-secret=
spring.security.oauth2.client.registration.google.scope=profile,email
위에서 spring.security.oauth2.client.registration.google.scope=profile,email
db부분은
많은 예제에선 scope 별도 등록하지 않는데 기본값이 openid, email, profile이기 떄문
강제로 profile을 등록한 이유는 openid라는 scope이 있으면 Open id Provider로 인식하기 떄문
이렇게 되면 OpenId Provider 인 서비스(구글) 과 타 서비스 회사(네이버, 페이스북 등)을 등록해야 되서 각각 OAuth2Service를 만들어야 하기 때문
하나의 OAuth2Service로 사용하기 위해 일부러 openid scope를 빼고 등록
스프링 부트에선 properties의 이름을 application-xxx.properties로 만들면 xxx라는 이름의 profile이 생성되어 이를 관리할 수 있다.
즉, profile =xxx라는 식으로 호출시 해당 properties의 설정들을 가져올 수 있다.
호출하는 방식은 여러 방식이 있지만 이 책애선 기본 설정인
application-properties에서 application-oauth.properties를 포함하도록 구성한다.
application.properties에 아래 코드를 추가한다면
spring.profiles.include=oauth
이제 위 설정값을 사용할 수 있게 된다.
.gitignore 등록
구글 로그인을 위한 id, pw는 외부 노출되면 개인정보가 털리므로 이걸 깃에 안 올리기 위해 설정해야한다.
application-oauth.properties
를 .gitignore에 추가한다.
위 설정 후 커밋시 커밋 목록에 application-oauth