Spring에서 API KEY 숨기기

MinSeong Kang·2022년 9월 19일
3

spring

목록 보기
16/18

최근에 Kakao Pay API를 사용하기 위해서, kakao deveopers에서 애플리케이션을 추가하고 앱키를 발급받았다.

Kakao Pay 단건결제 API를 호출하기 위해서 여러 레퍼런스를 찾아보면서 코딩을 하다가, 나도 아래와 같이 무심코 admin key를 직접 노출하고 커밋, 푸쉬하였다.

HttpHeaders headers = new HttpHeaders();
         headers.add("Authorization", "KakaoAK " + "AAAAAAAAAAAAAAA");

이후 두 번의 추가 커밋을 한 후, admin key가 노출되어 있다는 사실을 깨달았다. 추가적인 작업을 한 이후라 커밋을 되돌리기에는 늦었다라고 생각을 해서, 다급하게 내 애플리케이션에서 admin 키를 재발급 받았다. 이후 admin key를 숨기기 위한 방법을 찾아보았고, 해당 방법을 다음에도 활용하기 위해 포스팅하려고 한다.


Spring에서 API KEY 숨기기.

1) application.properties와 같은 디렉토리(resources)에 application-API-KEY.properties를 생성한다.

2) application-API-KEY.properties 내에 프로젝트에서 사용할 API KEY를 Key=Value 형식으로 입력한다.

kakao-admin-key = ABCDEFGHIJK123456

3) Spring이 application-API-KEY.properties를 인식할 수 있도록 application.properties에 아래 코드를 추가한다.

spring.profiles.include=API-KEY

4) Git에 API KEY 노출을 방지하기 위해서 아래와 같이 .gitignore에 추가한다.

application.properties
application-API-KEY.properties

5) 코드에서 @Value 어노테이션을 설정한 API KEY를 사용할 수 있다.

import org.springframework.beans.factory.annotation.Value;

public class KaKaoPayService {
	...
    @Value("${kakao-admin-key}")
    private String kakao_admin_key;
    
    ...
    public String kakaoPayReady(Long orderId) {
    	...
        HttpHeaders headers = new HttpHeaders();
        headers.add("Authorization", "KakaoAK " + kakao_admin_key);
        ...
    }

Git에 API KEY를 노출하면 누군가 악용할 수 있기 때문에 꼭 숨겨주어야 한다.!!

0개의 댓글