Spring Security OAuth2 - 구글
- 선행 과정
Spring Security
기본 설정
JWT
기본 설정
Spring Security OAuth2
기본 설정
구글 애플리케이션
![](https://velog.velcdn.com/images/appti/post/8e95fd29-81fe-4e24-b104-d36eb20fde50/image.png)
- 구글 클라우드 플랫폼에서 새 프로젝트를 생성합니다.
![](https://velog.velcdn.com/images/appti/post/113a5199-83b3-499c-a08b-2d5a87d7af60/image.png)
API 및 인증 서비스 -> OAuth 동의 화면
을 선택합니다.
User Type
은 외부를 선택해 구글 계정이 있는 모든 사용자가 접근 가능할 수 있도록 했습니다.
![](https://velog.velcdn.com/images/appti/post/4f12bff6-6676-4eb3-833b-8f57e5375f02/image.png)
- 앱 정보를 입력합니다.
- 앱 이름이 중복되면 오류가 발생하는 것 같습니다.(불확실)
![](https://velog.velcdn.com/images/appti/post/a10bac68-f570-42ed-9cab-4334caf781de/image.png)
![](https://velog.velcdn.com/images/appti/post/2988a313-39f3-4113-9633-dcfa31b66a13/image.png)
![](https://velog.velcdn.com/images/appti/post/d3628aee-000f-498f-8bb7-5b226d5a2384/image.png)
email
과 profile
만 선택하도록 하겠습니다.
![](https://velog.velcdn.com/images/appti/post/e5531a7f-0610-42ee-b302-3b03b6b97249/image.png)
- 다음으로 테스트 사용자를 추가합니다.
- 해당 앱이
테스트
상태라면 여기서 등록한 테스트 사용자만 사용할 수 있습니다.
- 제 경우 현재 테스트 단계이기 때문에 등록해주었습니다.
![](https://velog.velcdn.com/images/appti/post/0df11ecb-b7d7-4296-b3c4-6ab572a09eb6/image.png)
- 모든 작업이 끝나면 위와 같이 요약본으로 확인할 수 있습니다.
![](https://velog.velcdn.com/images/appti/post/bc755efd-a1ec-4aa5-9007-6fa287868809/image.png)
API 및 서비스 -> 사용자 인증 정보 -> 사용자 인증 정보 만들기
를 선택하고 OAuth 클라이언트 ID
를 생성합니다.
![](https://velog.velcdn.com/images/appti/post/fd85b799-ad18-4e60-878f-0fec2ec44d9b/image.png)
- 애플리케이션 유형은 웹 애플리케이션을 선택하고, 이름을 입력합니다.
![](https://velog.velcdn.com/images/appti/post/b832f6ec-a56d-4c7c-8bbe-046e0c2ccbc2/image.png)
- 도메인을 입력합니다.
- 현재 테스트 단계이기 때문에 로컬로 진행했습니다.
![](https://velog.velcdn.com/images/appti/post/9af224cf-334c-4afe-a012-00c917f3997b/image.png)
리디렉션 URI
를 입력합니다.
Spring Security OAuth2
의 redirect uri
템플릿은 {baseUrl}/login/oauth2/code/{registrationId}
이므로 이에 맞 춰서 작성해줍니다.
![](https://velog.velcdn.com/images/appti/post/0f6a3fe0-e96b-4399-a0c8-45e03636e686/image.png)
- 그럼 위와 같이
클라이언트 ID
와 클라이언트 보안 비밀번호
가 발급됩니다.
![](https://velog.velcdn.com/images/appti/post/d7d505fc-501a-40b4-8925-6db4aa7646a3/image.png)
API 및 서비스 -> 사용자 인증 정보 -> OAuth 2.0 클라이언트 ID
에서 방금 만들었던 OAuth 클라이언트 ID
을 선택해도 확인할 수 있습니다.
application.yml
spring:
security:
oauth2:
client:
registration:
google:
client-id: API 및 서비스 -> 사용자 인증 정보 -> OAuth 2.0 클라이언트 ID -> 클라이언트 ID
client-secret: API 및 서비스 -> 사용자 인증 정보 -> OAuth 2.0 클라이언트 ID -> 클라이언트 보안
scope:
- email
- profile
client
- 네이버 아이디로 로그인 하기 위해 만든 애플리케이션의 정보를 입력합니다.
scope
에 제공 정보로 선택한 항목을 추가합니다.
provider
- 구글의 경우
Spring Security OAuth2
가 provider
에 대한 정보를 가지고 있으므로 작성할 필요가 없습니다.
실행
http://localhost:8080/oauth2/authorization/google
로 요쳥합니다.
![](https://velog.velcdn.com/images/appti/post/3c4ecb3a-1b5d-4189-8996-d5711c385685/image.png)
![](https://velog.velcdn.com/images/appti/post/3c368084-691a-4201-be11-e24c4f530ae9/image.png)
- 위와 같이 토큰이 발급되었음을 확인할 수 있습니다.