💬 들어가기앞서 . . .
Spring Boot 프로젝트에서 OAuth2 로그인 기능을 붙이다가 예상치 못한 에러를 마주하게 되었습니다. 처음엔 단순한 설정 누락인 줄 알았지만, 생각보다 해결까지 꽤 돌아갔던 여정이라, 같은 문제를 겪을 분들께 도움이 되고자 이 글을 작성하게 되었습니다.
🛠️ [트러블슈팅] application.yml에서 oauth2 설정이 적용되지 않는 이슈
문제 상황 (Issue)
• Spring Boot 프로젝트를 실행하던 중, 다음과 같은 에러 메시지가 발생하며 애플리케이션이 정상적으로 시작되지 않았습니다.
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of method setFilterChains in org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration required a bean of type 'org.springframework.security.oauth2.client.registration.ClientRegistrationRepository' that could not be found.
Action:
Consider defining a bean of type 'org.springframework.security.oauth2.client.registration.ClientRegistrationRepository' in your configuration.
OAuth2 소셜 로그인을 본격적으로 개발하며 프로젝트에 적용해본 경험은 처음이라 당황했지만, 차근차근 원인을 파악해보았습니다.
원인 분석 (Cause)
에러 메시지를 해석하면, Spring Security에서 필요한 OAuth2 관련 Bean이 없어서 필터 체인을 구성할 수 없다는 의미였습니다. OAuth2 로그인 기능을 사용하려면 반드시 이 Bean이 생성되어 있어야 하는데, 그렇지 않다 보니 애플리케이션 실행 자체가 실패하게 되는 것이였습니다.
저는 설정 파일이 너무 길어지고 복잡해지는 걸 막기 위해, OAuth2 관련 설정을 application-oauth2.yml이라는 별도 파일로 분리해두었습니다. 그런데 application.yml의 spring.profiles.active에 oauth2 프로파일을 지정하지 않으면, Spring Boot는 해당 파일을 자동으로 읽어오지 않기때문에 Oauth 관련 필요한 Bean이 생성되지 않아 문제가 발생하였습니다.
🔍 설정 파일을 분리한 이유
애초에 application.yml 하나에 모든 설정을 다 넣다 보니 점점 내용이 길어지고, 설정 항목을 찾기도 어려워졌습니다.
특히 OAuth2 설정은 민감한 정보도 많고, 다른 환경(dev, test, prod)과 섞이면 실수의 여지도 생기기 쉬워서,
구조적으로 깔끔하게 정리하고자 application-oauth2.yml로 따로 분리하게 되었습니다.
✅ 원인 1: ClientRegistrationRepository Bean이 정의되지 않음
Spring Security에서 OAuth2 로그인을 사용할 경우, application.yml 또는 application.properties에 spring.security.oauth2.client.registration 관련 설정이 있어야 합니다.
하지만 이 설정이 존재하지 않거나, Spring이 해당 설정을 읽어오지 못하는 경우, 필요한 Bean이 생성되지 않아 문제가 발생합니다.
→ 이는 application.yml 또는 application.properties 파일에 OAuth2 관련 설정이 없거나, 해당 설정을 활성화하지 않았기 때문입니다.
✅ 원인 2: spring.profiles.active 설정 누락
application.yml의 spring.profiles.active에 oauth2 프로파일을 지정하지 않으면, Spring Boot는 해당 파일을 자동으로 읽어오지 않습니다.
해결 방법 (Solution)
• application.yml에 프로파일 설정 추가
아래와 같이 spring.profiles.active 항목에 oauth2 프로파일을 포함시켜주었습니다:
//기존의 application.yml
spring:
profiles:
active: default
//수정 한 application.yml
spring:
profiles:
active: default,oauth2
이렇게 하면 application-oauth2.yml 또는 application-oauth2.properties에 정의된 설정들이 제대로 적용되고, 관련 Bean도 생성됩니다.
참고 자료 (Reference)
• 관련 문서, 공식 문서, Stack Overflow 링크 등을 추가합니다.
공식 문서:https://docs.spring.io/spring-security/reference/servlet/oauth2/login/index.html
OAuth 2.0 Login :: Spring Security
docs.spring.io
✨ 게시글을 마무리하며
처음엔 익숙하지 않은 에러 메시지에 당황했지만, 덕분에 Spring의 프로파일 시스템과 Security 설정 흐름에 대해 더 잘 이해할 수 있었습니다. 비슷한 문제를 겪는 분들께 조금이라도 도움이 되었음합니다!