KCP 에서 본인인증 성공 시, 보내는 메시지가 EUC-KR 로 인코딩되서 오는데,
서버의 스프링부트가 자동으로 UTF-8 로 인코딩되면서 발생하는 오류.
res_msg=%C1%A4%BB%F3%C3%B3%B8%AE
해당값을, 그대로 복사해서 인코딩 작업을 하게 되면,
String message = "%C1%A4%BB%F3%C3%B3%B8%AE";
String encodeData = URLDecoder.decode(message,"EUC-KR");
System.out.println("URL 인코딩 : "+encodeData);
‘정상처리’라는 글을 볼 수 있으나, 실제 넘어오면 이상한 인코딩 (흡사 UTF-8로 인코딩했을 때 발생하는 오류처럼 보이는 메시지가 보입니다.
URL 인코딩 : ����ó��
원인은, 스프링부트에서 form POST 방식(application/x-www-form-urlencoded)으로 데이터를 보낸 경우 RequestBody는 자동으로 UTF-8로 urlEncoding 되기 때문입니다.
spring.http.encoding.force=false
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.filter.OrderedCharacterEncodingFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CharacterEncodingFilter;
@Configuration
public class filterConfig {
@Bean
public FilterRegistrationBean encodingFilterBean() {
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
CharacterEncodingFilter filter = new OrderedCharacterEncodingFilter();
filter.setForceEncoding(true);
filter.setEncoding("UTF-8");
registrationBean.setFilter(filter);
registrationBean.addUrlPatterns("/xxxxx/*");
return registrationBean;
}
}
참고 주소 : https://m.blog.naver.com/PostView.nhn?blogId=duco777&logNo=220605479481&proxyReferer=https:%2F%2Fwww.google.com%2F
12/13 결과적으로 서버에서 KCP측에 한번더 검증 API 를 호출하여 서버에서 안전하게 인코딩처리함. (이 문제는 프론트에서 처리된 KCP 인코딩 문자를 백엔드에서 변환하여 처리하려다보니 생긴 이슈였음.)