Client ID, Client Secret을 카카오 인증 서버로 보냅니다.spring-boot-starter-oauth2-client 의존성을 사용하면, 위와 같은 복잡한 OAuth 2.0 흐름의 상당 부분을 자동화하고 간편하게 설정할 수 있습니다..env)문제점: 데이터베이스 비밀번호, JWT 시크릿 키, OAuth Client Secret과 같은 민감한 정보를 application.yml 파일에 직접 작성하고 Git에 커밋하는 것은 심각한 보안 사고로 이어질 수 있습니다.
해결책 (설정의 분리): 코드와 설정을 분리하는 원칙에 따라, 민감한 정보는 코드 외부의 환경 변수를 통해 주입받아야 합니다. .env 파일은 개발 환경에서 이러한 환경 변수를 손쉽게 관리하기 위한 방법입니다.
.env 파일 사용하기.env 파일을 직접 읽지 않으므로, 별도의 라이브러리(e.g., java-dotenv)를 사용하여 이 기능을 활성화할 수 있습니다.build.gradle에 io.github.cdimascio:java-dotenv 라이브러리를 추가합니다..env 파일을 생성하고, 민감한 정보를 KEY=VALUE 형식으로 저장합니다.# .env
DB_USERNAME=myuser
DB_PASSWORD=mypassword
KAKAO_CLIENT_ID=abcdefg12345
KAKAO_CLIENT_SECRET=hijklmn67890.env 파일이 Git에 커밋되지 않도록 .gitignore 파일에 반드시 추가합니다.# .gitignore
.env.env 파일을 로드하도록 설정합니다.application.yml에서 참조: 이제 application.yml 파일에서 ${KEY} 구문을 사용하여 .env 파일에 정의된 값을 안전하게 참조할 수 있습니다.# application.yml
spring:
datasource:
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
security:
oauth2:
client:
registration:
kakao:
client-id: ${KAKAO_CLIENT_ID}
client-secret: ${KAKAO_CLIENT_SECRET}.env 파일을 사용하거나 실제 시스템 환경 변수를 사용하여 유연하게 서버를 운영할 수 있습니다.Client Secret과 같은 민감한 정보는 .env 파일을 통해 환경 변수로 관리해야 합니다..env 파일은 .gitignore에 반드시 추가하여 Git에 커밋되지 않도록 하고, application.yml에서는 ${...} 구문을 통해 이 값들을 안전하게 참조하여 코드와 설정을 분리하는 원칙을 지켜야 합니다.