JWT 토큰을 사용하여 Api에 연결하는 자바 스크립트 클라이언트를 만들고있었습니다. 서버쪽에는 문제가 없습니다. 토큰에 서명을 만들고 나중에 서명을 확인하여 아무도 토큰을 변조하지 않도록 할 수 있습니다.JWT 토큰 서명 유효성 검사 자바 스크립트
하지만 클라이언트 측에서 어떻게해야합니까? JWT 토큰을 디코드하고 헤더, 페이로드 및 서명을 볼 수 있습니다. 하지만 클라이언트 사이트에서 서명을 확인하려면 어떻게해야합니까? 이 라이브러리가 있습니까? 공개 키를 클라이언트로 전송하려면 어떻게해야합니까?
서명을 확인하지 않으면 토큰이 변경되지 않았다는 것을 어떻게 알 수 있습니까?
SSL은 중간 공격을받은 사람에게 어떻게 도움이됩니까? 공격자가 유효한 인증서를 가지고 있다면 중간에있는 사람을 서버로 신뢰할 수 있습니다. 반면에 중간에있는 사람은 JWT 토큰에 서명하는 데 필요한 개인 키를 갖고 있지 않습니다. 토큰의 유효성을 검사 할 경우 올바른 토큰이 아닌 토큰이 표시됩니다. – Arno
SSL/TLS를 사용하면 클라이언트/브라우저에 허용 된 인증 기관과 함께 트러스트 스토어가 있습니다. ** 신뢰할 수있는 CA는 인증서를 발급하지 않으므로 가짜 인증서를 생성하려고 시도하면 발급자 인증서가 신뢰 저장소에 없기 때문에 공격자가 호스트 이름에 유효한 인증서를 제시 할 수 없습니다. – pedrofb
답변에서 말했듯이 MITM 공격 (HTTPS 없음)을 사용하면 공격자는 신뢰할 수있는 서버에서 오는 유효한 토큰을 캡처하여 사기 작업을 수행 할 수 있습니다. ** 도난당한 토큰이 유효하기 때문에 공격자는 그것을 사용하기 위해 토큰을 변경할 필요가 없습니다 **. 모든 인증 시스템을 사용하면이를 방지하기 위해 채널을 보호해야합니다. – pedrofb