Inflearn Community Q&A
9장 API서버에서 사용자 정보 추출하기 호출 오류 문의
Written on
·
338
0
카카오로 access토큰 받아오고 나서
api서버에서 kakao로 사용자 정보 호출 시 오류가 나네요..
어떤 부분을 수정해야 할지 잘 감이 안오네요.
Not injecting HSTS header since it did not match request to [Is Secure]
--아래 로그
1-28T17:15:42.369+09:00 TRACE 26452 --- [apiserver] [nio-8080-exec-2] o.s.security.web.FilterChainProxy : Invoking ExceptionTranslationFilter (13/13)
2024-11-28T17:15:42.369+09:00 DEBUG 26452 --- [apiserver] [nio-8080-exec-2] o.s.security.web.FilterChainProxy : Secured GET /api/member/kakao?accessToken=s0KvFDK1upVad8mdV-4lSc8WG_NwqUV7AAAAAQoqJVAAAAGTcdcZj6ew61y3DOUZ
2024-11-28T17:15:42.370+09:00 INFO 26452 --- [apiserver] [nio-8080-exec-2] o.z.a.controller.SocialController : accessToken : s0KvFDK1upVad8mdV-4lSc8WG_NwqUV7AAAAAQoqJVAAAAGTcdcZj6ew61y3DOUZ
2024-11-28T17:15:42.372+09:00 INFO 26452 --- [apiserver] [nio-8080-exec-2] o.z.apiserver.service.MemberServiceImpl : response 1------------------------------
2024-11-28T17:15:42.405+09:00 TRACE 26452 --- [apiserver] [nio-8080-exec-2] o.s.s.w.header.writers.HstsHeaderWriter : Not injecting HSTS header since it did not match request to [Is Secure]
2024-11-28T17:15:42.405+09:00 ERROR 26452 --- [apiserver] [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.web.client.ResourceAccessException: I/O error on GET request for "https://kapi.kakao.com/v2/user/me": PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target] with root cause
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:148) ~[na:na]
at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:129) ~[na:na]
at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297) ~[na:na]
-- 소스코드
private void getEmailFromAccessToken(String accessToken) {
String kakaoGetUserURL = "https://kapi.kakao.com/v2/user/me";
if(accessToken == null){
throw new RuntimeException("Access Token is null");
}
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Bearer " + accessToken);
headers.add("Content-Type","application/x-www-form-urlencoded");
HttpEntity<String> entity = new HttpEntity<>(headers);
UriComponents uriBuilder = UriComponentsBuilder.fromHttpUrl(kakaoGetUserURL).build();
log.info("uriBuilder " + uriBuilder);
log.info("response 1------------------------------");
ResponseEntity<LinkedHashMap> response =
restTemplate.exchange(
uriBuilder.toString(),
HttpMethod.GET,
entity,
LinkedHashMap.class);
log.info("response 2------------------------------");
log.info(response);Quiz
카카오 소셜 로그인 과정에서 인가 코드(Authorization Code)의 주요 목적은 무엇일까요?
사용자에게 보여줄 카카오 동의 화면 생성
Access Token을 발급받기 위한 교환 수단
카카오 개발자센터 설정 확인
사용자의 비밀번호 재설정 요청
Answer 2
0
이건 프로젝트를 실행해 봐야 정확한 원인을 알 수 있을 듯 합니다.
https://drive.google.com/drive/folders/1ZLHRKaXx8Ou8kZNd1WE6qALxq_wJODXW
에 프로젝트를 올려주시면 저녁에 테스트를 해 볼 수 있습니다.
코드 올리신 후에 댓글 남겨주세요
0
안녕하세요, 조정대님. 인프런 AI 인턴입니다.
주어진 로그 메시지와 소스 코드를 기반으로 문제의 원인을 분석해 보겠습니다.
문제의 원인:
주된 문제는 다음과 같습니다:
자격 증명 경로 실패: 이 문제는 주로 HTTPS 요청을 처리하는 동안 발생합니다. 인증서 경로를 찾을 수 없다는 메시지는 SSL 인증서가 설치되지 않거나 잘못 설정되어 있음을 의미합니다. 이는 서버가 API 서버(kapi.kakao.com)에 연결할 때 올바르게 신뢰할 수 있는 경로를 설정하지 못했다는 의미입니다.
HSTS Header 관련 메시지: “Not injecting HSTS header since it did not match request to [Is Secure]“라는 메시지는 보안 연결이 설정되지 않았거나, 요청이 HTTPS가 아니라는 힌트를 줍니다. 이 부분은 직접적인 오류 원인은 아니지만, 설정 검토가 필요합니다.
해결 방법:
SSL 인증서 설치: 서버에 신뢰할 수 있는 인증서를 설치해야 합니다. 카카오 API를 호출하기 위해서는 인증서 경로를 시스템에 추가하여 Java가 이를 신뢰하도록 해야 합니다.
- 일반적으로 시스템의 기본 KeyStore에 인증서를 추가할 수 있습니다. 다음 명령을 통해 인증서를 수동으로 설치할 수 있습니다:
keytool -import -alias someAlias -keystore cacerts -file path/to/certificate.crt- 이 때,
cacerts파일은 Java 설치 경로의 lib/security 디렉토리에 있으며, 기본 비밀번호는changeit입니다. 이 작업은 신중하게 진행되어야 하며, 반드시 인증서의 법적 유효성을 검증해야 합니다.
- 일반적으로 시스템의 기본 KeyStore에 인증서를 추가할 수 있습니다. 다음 명령을 통해 인증서를 수동으로 설치할 수 있습니다:
HSTS 설정 확인: HSTS 설정은 보안 강화와 관련된 부분이므로, 현재 문제 해결에 직접적인 영향을 미치지 않지만, HTTPS로 서버를 설정하여 보안을 강화할 수 있습니다.
테스트 환경 구성: 로컬에서 SSL 설정된 서버를 테스트하는 도중 발생하는 문제일 수 있으므로, 인증서 관련 설정을 시험할 때는 로컬 환경에서 모든 설정이 올바르게 되어 있는지 확인해 보세요.
참고 자료:
- Spring RestTemplate SSL 인증서 문제 해결하기에서는 RestTemplate과 SSL에 관련한 설정을 다루고 있으니 참고하시면 좋습니다.
추가적으로 비슷한 문제를 겪으신 분들의 답변을 통해 더 많은 정보를 얻으실 수 있습니다:
- 섹션 8 .. API서버에서 사용자 정보 추출하기(2) 질문입니다.에서 프론트엔드와 백엔드 간의 토큰 전달 및 SSL 설정 관련된 유사 사례를 확인하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






회사에서 짬짬히 강의를 듣는데 외부로 보내기가 안되네요..
react쪽에서 카카오 회원정보 가져오는 걸 시도해보니 잘되어서 api서버쪽도 조금 변경해 수업을 따라가고 있습니다.
신경써주셔서 감사합니다.