2013-04-23 2 views
8

CORS 및 Angular.js를 사용하여 Node.js를 사용하여 간단한 로그인을하고 있습니다. 이다Node.js Angular.js를 사용하는 CORS 세션 쿠키

--- client.example.com 성공에 세션 쿠키가 너무 client.example.com을 반환하고 액세스 할 수있는 POST 너무 api.example.com/login을하고 너무 서비스 세션 쿠키에 의해 보호 api.example.com/secret처럼 GET.

세션 쿠키로 보호되지 않는 GET 요청을하는 것은 문제가되지 않습니다.

궁극적 목표는 여기에 너무 authenticate a client side app to a REST api using CORS with a local stradegy --- 즉 사용자 이름 & 비밀번호 --- 심지어 밤은 위의 규칙 가능한 경우.

나는 어디에서든지 배우기 위하여 작동하는 보충을 찾을 수 없습니다 - 올바른 방향으로 나를 가리 키시겠습니까?

보너스 : 실례를 보여주십시오.

+0

쿠키의 도메인을 .example.com으로 설정 한 경우에만 가능합니다. api.example.com에서 client.example.com에 대한 쿠키를 설정할 수 없습니다. http://stackoverflow.com/questions/1062963/how-do-browser-cookie-domains-work – alexwen

+0

@alexwen 동의하고 싶다면 어떻게해야합니까? 어떤 도메인에서든, --- client.example1.com'과'client.example2.com'. 여기서 목표는 CORS를 사용하여 로컬 stradegy (즉,'username' 및'password')를 사용하는 클라이언트 측 앱인 REST API도 너무 인증합니다. –

답변

2

문제는 매우 간단합니다. 브라우저는 한 도메인에 설정된 쿠키를 다른 도메인으로 전송하는 것을 허용하지 않습니다.
보안을위한 것입니다. 세션 쿠키가 모든 도메인에서 액세스 할 수 있다면 모든 사이트에서 csrf를 수행 할 수 있습니다 (정의에 따라 csrf를 수행하는 것입니다. 다른 사이트의 한 사이트에서 세션을 사용하십시오).

주위에는 여러 가지 방법이 있지만 적용 할 때주의해야합니다.

  • 가장 쉬운 방법은 로그인 및 크로스 도메인 요청을 할 JSONP를 사용하는 것입니다, JSONP는 기본적으로 쿠키를 크로스 도메인 정책을 중단.

  • 당신은 api.example.com에 앉아 client.example.com 페이지에있는 iFrame을 포함 할 수 있습니다, 부모와 iframe이 통신 할 수는 post message를 사용하여. 당신은 당신이 액세스 client.example.com을 허용하는 정보에 추가 조심해야한다, 그래서

두 가지 방법은, (자신의 특성상) CSRF 요청에 열려 있습니다.