2017-09-18 10 views
0

JWT 인증 플러그인이있는 Kong API 게이트웨이를 사용하여 샘플 응용 프로그램을 구현하고 있습니다.KONG API 게이트웨이와 쿠키를 사용하는 JWT 인증

thread을 참조하면 JWT를 브라우저에 저장하는 두 가지 방법이 있습니다. 웹 저장소 또는 쿠키. 그러나 웹 저장소 (즉, 세션 저장소 및 로컬 저장소)는 XSS (Cross-Site Scripting Attack)에 취약 할 수 있습니다. 그래서 다른 옵션은 쿠키입니다. 우리가 XSS를 막을 수있는 방법이 다음 JWT를 저장하기 위해 웹 스토리지를 사용하는 경우

  1. , 나는이 개 질문이

    (비록 CSRF는주의를주의해야한다). 그렇다면 새로운 페이지에서 동일한 페이지가 열려 있거나 같은 페이지를 새로 고침하면 어떻게 작동할까요?

  2. 쿠키 사용 : 요청시 쿠키를 보낼 수 있습니다. 그러나 KW는 헤더가 (Authorisation: Bearer token)이고 쿠키를 사용하여 인증하지 않는 경우에만 JWT가 인 경우 엔드 포인트 URL을 인증합니다. KONG API 게이트웨이를 사용하여 쿠키에 설정된 JWT를 확인할 수있는 방법이 있습니까?

답변

1

당신이 당신의 JWT에 민감한 데이터를 저장하지 않는 한, webStorage에 JWT를 저장에 대한 아무 문제가 없다 (그러나 당신이 이제까지해서는 안가, 당신은 쉽게 해독 할 수 있기 때문에). 요점은 토큰이 보안을 공유한다는 것인데, 서버가 알고있는 것만이 보안을 유지한다는 것입니다. 만료 시간을 설정하여 훨씬 안전 해 지도록해야합니다.

아니요, 쿠키에 JWT 토큰을 전달할 수 없습니다.이 쿠키는 헤더 (여기에서는 권한 부여)에만 있으며 KONG API에 대해서는 알지 못하지만 허용해서는 안됩니다.

그것은 당신의 페이지 응용 프로그램에이 "/"에 홍콩에서 보호 된 API에서 제공되고있는 것 같습니다

(@ antoine2vey 대답에 추가하려면

+0

빠른 답장을 보내 주셔서 감사합니다. 그래 네가 맞아. 하지만 단일 페이지 응용 프로그램을 개발하고 있으므로 재로드/새로 고침 페이지 시나리오를 어떻게 처리 할 수 ​​있습니까? 만약 내가 새 탭을 열고 HTTP 요청 (웹 저장소에 저장 됨)에 JWT를 전달하는 방법을 가정하면 –

+0

'webStorage' 대신'localStorage'를 시도해야합니다.'localStorage'는 도메인에 영속적이며 페이지에 저항력이 있습니다 다시로드/새로 고침! JWT를 한 번만 (로그인 등) 클라이언트에 전달하고 'localStorage'에 저장하면됩니다. – antoine2vey

+0

감사합니다. 로컬 저장소에서 HTTP 요청으로 토큰을 다시 보내는 방법. 로컬 저장소는 도메인에 영구적으로 저장됩니다. 그러나 JWT 토큰을 HTTP 요청에 전달하는 것이 중요합니다. –

1

(JWT에 대한 심판 here입니다) 슬래시) 자원. 보호되지 않는 "/"(슬래시) 리소스에서 페이지 내용을 가져온 다음 javascript 코드를 실행하면 쿠키에 액세스 할 수 있고 JWT 토큰을 통과하는 보호 된 리소스에 대한 요청을 수행 할 수 있다고 제안합니다. Kong이 당신을 위해 확인할 수있는 헤더에서.

의미가 있습니까?

+0

안녕하세요, 응답 해 주셔서 감사합니다. 한번 살펴 보겠습니다. 지금은 kong의 코드를 변경하여 쿠키 (https://github.com/Mashape/kong/pull/2363)를 수락하고 실행 중입니다. –