2017-12-15 5 views
1

JWT 토큰을 사용하여 Api에 연결하는 자바 스크립트 클라이언트를 만들고있었습니다. 서버쪽에는 문제가 없습니다. 토큰에 서명을 만들고 나중에 서명을 확인하여 아무도 토큰을 변조하지 않도록 할 수 있습니다.JWT 토큰 서명 유효성 검사 자바 스크립트

하지만 클라이언트 측에서 어떻게해야합니까? JWT 토큰을 디코드하고 헤더, 페이로드 및 서명을 볼 수 있습니다. 하지만 클라이언트 사이트에서 서명을 확인하려면 어떻게해야합니까? 이 라이브러리가 있습니까? 공개 키를 클라이언트로 전송하려면 어떻게해야합니까?

서명을 확인하지 않으면 토큰이 변경되지 않았다는 것을 어떻게 알 수 있습니까?

답변

1

클라이언트 측에서 서명의 유효성을 검사하지 않으면 토큰이 실제로 서버에 있는지 확인할 수 있습니까? 아마 중간 공격에서 사람을 피하지 않는 토큰

서명 유효성 검사를 변화하고 중간에 사람이있다. 공격자는 내가 서명을 확인하지 않으면


어떻게 할 수도

SSL/TLS 채널 (https)을 사용하여 유효한 토큰

를 사용하여 자격 증명을 캡처하거나 메시지를 변경하는 채널을 도청 할 수 토큰이 훼손되지 않았습니까?

에서 TLS 신뢰할 수있는 서버가 제공하는 토큰이 아마 유효합니다. (이 로컬 스토리지에서 변경되었습니다 수 있습니다). 서명의 유효성을 검사 할 수 있습니다. 이 작업은 일반적으로 서버 측에서 수행되지만 (@ sakuto 응답 참조) 브라우저에서 완벽하게 수행 할 수 있습니다.

그러나 클라이언트 사이트에서 서명을 확인하려면 어떻게해야합니까?

  1. 는 JWT에서 서명을 추출하고 (base64url)
  2. 암호화 라이브러리
  3. 를 사용하여 디지털 서명을 확인을 디코딩 신뢰할 수있는 서버
  4. 에서 공개 키를 다운로드하는 단계입니다

Webcrypto를 사용하는 것이 좋습니다. https://github.com/diafygi/webcrypto-examples/blob/master/README.md#rsassa-pkcs1-v1_5

+0

SSL은 중간 공격을받은 사람에게 어떻게 도움이됩니까? 공격자가 유효한 인증서를 가지고 있다면 중간에있는 사람을 서버로 신뢰할 수 있습니다. 반면에 중간에있는 사람은 JWT 토큰에 서명하는 데 필요한 개인 키를 갖고 있지 않습니다. 토큰의 유효성을 검사 할 경우 올바른 토큰이 아닌 토큰이 표시됩니다. – Arno

+0

SSL/TLS를 사용하면 클라이언트/브라우저에 허용 된 인증 기관과 함께 트러스트 스토어가 있습니다. ** 신뢰할 수있는 CA는 인증서를 발급하지 않으므로 가짜 인증서를 생성하려고 시도하면 발급자 인증서가 신뢰 저장소에 없기 때문에 공격자가 호스트 이름에 유효한 인증서를 제시 할 수 없습니다. – pedrofb

+0

답변에서 말했듯이 MITM 공격 (HTTPS 없음)을 사용하면 공격자는 신뢰할 수있는 서버에서 오는 유효한 토큰을 캡처하여 사기 작업을 수행 할 수 있습니다. ** 도난당한 토큰이 유효하기 때문에 공격자는 그것을 사용하기 위해 토큰을 변경할 필요가 없습니다 **. 모든 인증 시스템을 사용하면이를 방지하기 위해 채널을 보호해야합니다. – pedrofb

3

일반적으로 클라이언트 측에서 확인을 수행하지 않으며 중요한 데이터를 토큰에 저장하지 않습니다. 모든 제어 및 권한은 백엔드에서 검사됩니다. 즉, 사용자가 토큰을 변조하더라도 백엔드 컨트롤을 전달할 수 없으며 전면에 옵션이 하나만 표시 될 수 있습니다.

+0

그러나 클라이언트 측에서 서명의 유효성을 검사하지 않으면 어떻게 토큰이 실제로 서버에 있는지 확인할 수 있습니까? 중간에 누군가 토큰을 바꾸는 사람이 있을지도 모릅니다. 토큰이 유효한지 확인할 수없는 경우 발급자를 확인하는 용도는 무엇입니까? 아니면 누군가 내 트래픽을 가로 채고 서버로 포즈를 취하고있을 수도 있습니다.나는 이제 '가짜'서버를 신뢰하고 신용 카드 계좌 번호를 – Arno

+0

@Arno로 보냅니다. 클라이언트 측에서는 일반적으로 단순히 페이로드/해독 (해독하지 않음) 및 토큰 만료 확인 만 수행합니다. 이것은 불필요한 토큰 호출을 피하기 위해 수행됩니다. 변조에 대한 실제 토큰 유효성 검사는 서버 측에서 발생해야합니다. –