2017-04-06 1 views
0

내 이오닉/각도 2 앱이 실행 중입니다. localhost:8000 앱은 결국 브라우저 플랫폼에서 실행됩니다. 응용 프로그램 내 로컬 컴퓨터에서 https://adawy/api, adawy 내 호스트 이름이며 hosts 파일 및 apache 가상 호스트에 정의 된 위치에있는 RESTFull API를 호출합니다. 서버 측은 슬림 3입니다.HTTPOnly 쿠키를 사용하여 XSRF로부터 JWT를 보호하는 방법은 무엇입니까?

인증시 API는 모든 요청에 ​​사용할 JWT를 반환합니다.

내 목표는 크로스 사이트 요청 위조 및 크로스 사이트 스크립팅으로부터 토큰을 보호하는 것입니다. 토큰을 자바 스크립트 변수 나 로컬 저장소에 저장하면 JWT가 자바 스크립트에서 액세스 할 수있게됩니다.

가장 좋은 방법은 JWT를 HTTPOnly 쿠키로 반환하는 것입니다. 따라서 자바 스크립트에서는 액세스 할 수 없으며 곧 브라우저로 전송되어 adawy 도메인에 대한 모든 요청이 전송됩니다.

토큰을 쿠키로 성공적으로 반환했지만 문제는 다음 XHR 요청과 함께 쿠키가 전송되지 않는다는 것입니다. enter image description here

또한 Devtools의 쿠키 섹션에서 쿠키를 볼 수 없습니다.

enter image description here

나는 각도가 XSRF-TOKEN 쿠키를보고 같은 문제에 지원할 수 있다는 것을 알고. 쿠키의 이름을 XSRF-TOKEN으로 설정했지만 다른 요청이 있으면이 쿠키는 전송되지 않습니다.

각도가이 쿠키에 액세스 할 수있는 것처럼 보안되는 방법이 궁금합니다. 다른 스크립트도 마찬가지입니까?

다음 요청은 쿠키가 전송되지 않은 상태입니다. 각도 코드는 직접 설정하므로 헤더 Authorization을 무시하십시오. 마지막 GET 요청을하는 동안 내 각 응용 프로그램에서

enter image description here

, 나는 withCredentials: true 옵션을 설정하고있다.

업데이트 나는 adawy.com을 사용했지만 여전히 동일한 문제가 있습니다.

답변

1

첫 번째 응답은 허용되지 않는 최상위 도메인 Domain=.adawy; (Set-Cookie 헤더 참조)에 명시 적으로 쿠키를 설정하려고 시도합니다. 가능한 경우 도메인없이 설정을 시도하고 작동하는지 확인하십시오. 또는 tld가있는 호스트 이름을 사용해보십시오.

+0

답변 해 주셔서 감사합니다. 도메인을 'adawy, com'으로 변경했으며 여전히 동일한 문제가 있습니다. –

+0

[Chrome은 로컬 호스트로부터의 요청에 대한 CORS 예외를 지원하지 않습니다.] (http://stackoverflow.com/questions/10883211/deadly-cors-when-http-localhost-is-the-origin). [이 문제는 2014 년에 종료 된 것으로 확인 됨] (https://bugs.chromium.org/p/chromium/issues/detail?id=67743). 분명히'Access-Control-Allow-Origin : *'은 localhost에서 작동 할 것이므로 테스트를 끝낼 수는 있지만'localhost'는 no-go입니다. – LinuxDisciple

+0

나는 그 질문에 비틀 거리며, 그 이유가 내가'adawy.com'을 호스트 이름으로 사용하고있는 이유이다. 쿠키 설정 자체에 문제가 있다고 생각합니다. 그러나, 나는 알아낼 수 없다. –

관련 문제