NEXT.JS

솔라피 API

최혁재 2024. 7. 25. 11:29

문자 발송 기능을 추가해야해서 처음에는 솔라피 SDK(라이브러리)를 사용하려 했으나, runtime 환경이 Edge여서 동작하지 않아 직접 API 요청을 통해 구현하기로 했습니다.

솔라피 SDK를 사용하면 코드는 매우 간단합니다:

 

출처 : 솔라피 공식 개발 문서
https://developers.solapi.com/sdk-list/Node.js/send-message ;

 

 

그러나, 이 SDK를 사용할 수 없기 때문에 API 요청 공식 문서를 참고하여 직접 구현해야 했습니다.

 

 

 

<AuthenticationMethod>
Signature 생성 알고리즘으로 HMAC-SHA256, HMAC-MD5 중에 하나를 선택할 수 있습니다.

<API Key>
발급받은 API Key를 입력합니다.

<Date Time>
ISO 8601 규격의 날짜와 시간을 입력합니다.

<Salt>
12 ~ 64바이트의 불규칙적이고 랜덤한 문자열을 생성하여 사용합니다.

<Signature>
<Date Time>과 <Salt>를 하나로 연결한 문자열을 데이터로 하고 API Secret을 Key로 만들어진 HMAC 해시코드

Signature의 재사용을 막기위해서 입력된 <Date Time>의 표준시간을 기준으로 ±15분 차이가 날 경우 RequestTimeTooSkewed 오류를 리턴합니다. 또한 15분 내에 한번 사용된 Signature는 중복사용이 불가능하므로 원천적으로 재사용을 차단하고 있습니다.

참고

  • 날짜와 시간을 표현하는데 있어서 시차와 표기법이 틀릴 수 있으므로 혼돈이 없도록 국제규격 ISO 8601을 따릅니다. ISO 8601 을 참고하세요.

Signature 생성

클라이언트에서 <Date Time> + <Salt> 를 데이터로, API Secret을 Key로 사용하여 HMAC(Hash-based Message Authentication Code)을 만들어진 Signature를 서버로 보내면, 서버 쪽에서도 동일한 방식으로 만들어 비교하게 됩니다. API Secret은 Signature를 생성할 때만 사용하고 외부에 노출되지 않도록 주의해야 합니다.

위의 형태에따라 제작해야한다 
https://developers.solapi.com/references/authentication/api-key ;

API KEY 인증방식 개발 공식문서

 

이 코드는 API 요청을 통해 문자 발송 기능을 구현한 예제입니다. 환경 변수에 저장된 API 키와 시크릿 키를 사용하며, 날짜와 랜덤 문자열(Salt)을 결합하여 HMAC-SHA256 알고리즘으로 Signature를 생성합니다. 이를 Authorization 헤더에 포함하여 요청을 보냅니다.

이렇게 직접 API 요청을 통해 문자 발송 기능을 구현할 수 있습니다. 이를 통해 runtimeEdge 환경에서도 솔라피 API를 사용할 수 있습니다.

'NEXT.JS' 카테고리의 다른 글

R2 파일 다운로드 버그  (2) 2024.07.16
bcrypt 비밀번호 암호화  (1) 2024.06.04