제목과 같이 테스트하는데 401 unauthorized 에러가 나왔다.
https://api.ncloud-docs.com/docs/common-ncpapi
NCP 공식문서 그대로 진행했고, 인증관련 에러라서 확인해봐야 할 것은 serviceId, accessKey, secretKey정도일 것이다.
분명 일치한다면... 뭐가 문제일까?
문제는 다른 곳에 있었다...... -,-
makeSignature 함수에서 crypto로 암호화를 하는데 요렇게 변수가 들어간다.
const key = makeSignature(
accessKey,
secretKey,
method,
uri,
timestamp
);
그럼 방금 말했듯 변수들에 이상이 없다면 확인해야 할 것은 method, timestamp겠다.
그런데 method는 어차피 문자발송이라 Post고, 그럼 timestamp 라는건가?
혹시나 해서 현재시간을 기준으로 바로 문자열로 바꿨더니..... 정상적으로 202로 확인되고 문자 발송이 완료되었다.
왜 오류였을까?
timestamp에 대해서 공식문서에는 다음과 같이 정의하고 있다.
- 1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(Millisecond)로 나타낸 것
- API Gateway 서버와 시간 차가 5분 이상 나는 경우 유효하지 않은 요청으로 간주
//변경 전 코드
const timestamp = String(Math.floor(Date.now() / 1000));
//변경 후 코드
const timestamp = Date.now().toString();
물론 헤더에 timestamp가 key에도 들어가기 때문에 2번 들어간다지만.......
unauthorized 로만 에러가 확인되니까 환경변수에 관련된 에러라고 특정해서 생각해서 1시간은 붙잡은 것 같다.
const headers = {
"x-ncp-apigw-timestamp": timestamp,
"x-ncp-iam-access-key": accessKey,
"x-ncp-apigw-signature-v2": key,
};
내 시야가 정답은 아니라는걸 꼭 명심하자!
728x90
'개발 > library, framework' 카테고리의 다른 글
[NEST | Prisma] 의도치 않은 DB 연결 (0) | 2023.11.05 |
---|---|
[ncp] ncp sens 최대 문자 길이 관련 오류 (0) | 2023.11.03 |
당신의 이미지 업로드/다운로드가 느린 이유 feat. network탭 활용 (0) | 2023.10.22 |
[JWT | Node.js] expiresIn 만료기간 적용이 안될때 (0) | 2023.09.06 |
[NEST] custom validation pipe를 대체하는 간단한 로직 (0) | 2023.09.05 |