문제 상황
- Feign Client를 사용하여 Naver Cloud Platform의 SMS 서비스 Open API를 요청하는데 401(Unauthorized) 에러 발생.
해결 과정
- Unauthorized 에러이기 때문에 네이버 서버에 인증하는 부분에서 값이 제대로 들어가지 않았다고 생각하여 먼저, 인텔리제이 환경변수에 serviceId, 액세스 키, 시크릿 키 값이 제대로 들어갔는지 확인함.
→ 제대로 들어가 있었음. - HttpHeader를 여러 개 전달해야 했는데, 그 과정에서 여러 개의 헤더가 제대로 들어가지 않았다 생각하여 Header를 만들고 전달하는 방법을 바꾸어 시도
→ 동일하게 401에러 발생 - 스프링 코드의 Feign Client에서 Naver 서버로 Post 요청을 보낼 때, 헤더 값이 제대로 전달되지 않는 것이라고 생각하여 네이버 서버에서 발생하는 로그를 확인하려 방법을 찾아봄.
→ NCP에서 로그 보는 방법을 찾지 못함.
에러 발생 원인
- NCP(Naver Cloud Platform)의 serviceId 값이 ncp:sms:kr:oooooo:ooooo와 같은 형식으로 이루어짐.
- 위의 값을 환경 변수로 받아 api 요청을 보낼 때, 콜론을 자동으로 URL 인코딩시키고 이를 ncp에서 그대로 인식하여 오류가 발생했다.
해결 방법
- RequestInterceptor를 만들어 다시 콜론으로 바꾸어 주었다.
@Bean
public RequestInterceptor basicAuthRequestInterceptor() {
return new ColonInterceptor();
}
public static class ColonInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
template.uri(template.path().replaceAll("%3A", ":"));
}
}
반응형
'Study > Spring' 카테고리의 다른 글
[Spring] XML Parsing (0) | 2024.03.22 |
---|---|
Springboot에서 Redis 사용 방법 정리 (0) | 2023.12.01 |
네이버 SENS API 사용 방법(feat. Feign Client) (1) | 2023.11.08 |
연관관계 매핑 기본 개념 (0) | 2022.11.17 |
IoC와 DI (0) | 2022.06.24 |