NCP) 네이버 클라우드 API Signature Key 생성 ( java )

NCP) 네이버 클라우드 API Signature Key 생성 ( java )

 

 

 

안녕하세요.

오늘은 Java 소스를 이용한

네이버 클라우드 API Signature Key 생성하는 방법을 알려 드리겠습니다.

 

 

네이버 클라우드 API를 사용하기 위해서는

네이버에서 미리 정해진 알고리즘으로 SignatureKey를 요청 헤더에 담아야

정상적으로 API 연동을 진행할 수 있습니다.

 

 

 

Signature

 

 

네이버 클라우드 API에서 요구하는 헤더는

x-ncp-apigw-timestamp,     x-ncp-iam-access-key ,    x-ncp-apigw-signature-v2

이렇게 총 3가지 이며

 

 

그 중 3번째에 존재하는 x-ncp-apigw-signature-v2가 오늘 만들어볼 헤더 정보 입니다.

 

 

 

 

 

 

 

 

 

네이버 클라우드 Signature 생성 함수


 

/**
 * 네이버 클라우드 API 호출 암호화 헤더키 만들기
 */
public String makeSignature(String method, String url, String timestamp, String accessKey, String secretKey ) throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException {

   String space = " ";              
   String newLine = "\n";            


   String message = new StringBuilder()
         .append(method)
         .append(space)
         .append(url)
         .append(newLine)
         .append(timestamp)
         .append(newLine)
         .append(accessKey)
         .toString();

   SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
   Mac mac = Mac.getInstance("HmacSHA256");
   mac.init(signingKey);

   byte[] rawHmac = mac.doFinal(message.getBytes("UTF-8"));
   String encodeBase64String = Base64.encodeBase64String(rawHmac);

   return encodeBase64String;



}

 

먼저 다음과 같이 makeSignature 라는 이름의 함수를 만들어 주었습니다.

해당 함수에는 method, url, timestamp, accessKey, secretKey 총 5개의 파라미터가 필요한데

각 파라미터들을 어떻게 세팅해주었는데 아래에서 알아보겠습니다.

 

 

 

 

Signature 함수 파라미터 세팅


 

1.method ( String )

 

해당 key 생성 method 에는 “GET” 이 고정으로 들어갑니다.

 

method에는 “GET”  넣어주시면 되겠습니다.

String method = "GET";

 

 

2. url ( String )

 

url에는 본인이 호출 해야 할 api의 url을 입력해줍니다.

 

주의 하실 점은 사용하려는 API의 도메인을

제외한 “/”아래 모든 url. (단 쿼리스트링도 포함) 입니다.

 

/api/ 부분의 뒤쪽부터 입력하신다고 생각하시면 됩니다.

 

ex )  “/api/v1/services/”+service_id+”/infers/lookup?type=”+type+”&targetId=”+target_id;

 

 

3. timestamp ( String )

 

timestamp 에는 Java기준 해당 소스를 이용하시면 됩니다.

String timestamp = Long.toString(new Date().getTime());

.

 

4. accessKey ( String ), secretKey ( String) 

 

accessKeyd 와 secretKey 는

네이버클라우드플랫폼 사이트에 접속하여

 

마이페이지 ->  계정관리 -> 인증키 관리

에서 확인하시고 String 형식으로 입력하시면 됩니다.

 

 

 

마무리


 

오늘은 Java 소스를 이용하여

네이버 클라우드 API Signature Key 생성하는 방법에 대해 알아보았습니다.

 

 

네이버 Aitems를 연동 하는 중에

네이버 클라우드 서비스를 이용하기 위해서는

Key가 무조건 있어야 연동을 할 수 있기 때문에

해당 방법을 알게 되었고

 

 

네이버 클라우드에 존재하는 다양한 API들을 연동하기 전에

해당 방법을 숙지해 놓으면 API 연동에

큰 도움이 되지 않을까 싶습니다.

 

 

저는 처음 Aitems 연동 시 문서를 꼼꼼하게 읽지 않아

헤더 때문에 고생을 좀 했습니다..

다른 분들은 꼭 고생하지 마시고

연동하셨으면 좋겠습니다.

 

 

생각보다 깔끔하게 요청 헤더를 세팅 할 수 있어서 좋았습니다.

처음 세팅 할 때는 좀 헤매서 오래 걸렸는데 정리 하고 보니

생각보다 간단한 것 같습니다.

 

 

혹시 궁금하신 사항이나 이해가 안 가는 부분이 있으면

댓글 달아주시면 성심성의껏 빠른 시일 내에

답변 드리겠습니다.

 

 

이상으로 포스팅을 마치겠습니다.

감사합니다 ^^

 

 


 

 

자세한 사항은 공식 문서를 참조해주시면 도움이 됩니다.

 

네이버 공식문서

(Bash, Python, JavaScript 방법 존재 )

 

 

 

 

 


 

 

 

Leave a Comment