2014-12-19 2 views
6

ember-simple-auth를 사용하여 엠버 이니셜 라이저를 사용하여 HTTP에서 HTTPS로 사용자를 리디렉션하는 방법에 대한 권장 사항을 얻길 바랬습니다.간단한 인증을 사용하여 HTTP에서 HTTPS로 리디렉션

`import ENV from 'cio/config/environment'` 

SSLInitializer = 
    name: 'ssl' 
    before: 'simple-auth-cookie-store' 
    initialize: (container, application) -> 
    application.deferReadiness() 

    # Redirect if hitting HTTP and SSL is enabled 
    if ENV.SSL and window.location.protocol is "http:" 
     window.location.href = "https:" + window.location.href.substring(window.location.protocol.length) 
     return false 

    application.advanceReadiness() 

`export default SSLInitializer` 

if 문이 true로 평가되는 경우에도 쿠키가 무효화되는 것으로 보입니다. 나는 등 여러 가지를 시도했습니다 다음 window.location.href 전에 if 문에서 '저장'

  • application.destroy(), '단순 인증'전에
  • : 이전

    • 설정되어 있습니다

    내가 알 수있는 것부터 디버깅 후. 앱이 HTTPS로 리디렉션하지만 cookieName이 document.cookie에 없습니다. (https://github.com/simplabs/ember-simple-auth/blob/master/packages/ember-simple-auth-cookie-store/lib/simple-auth-cookie-store/stores/cookie.js#L154)

    우리가 index.html에 간단한 스 니펫을 가지고 있기 때문에이 방법을 사용하기 전에 CSP를 사용하여 이니셜 라이저에 보관하고 싶습니다. 어떤 추천?

    감사합니다.

  • +0

    왜 서버가 아닌 이니셜 라이저에서이 작업을 수행 하시겠습니까? 승인자를 사용하는지 여부는 모르지만 서버가 아닌 경우 HTTPS가 아닌 모든 요청에 ​​응답하지 않아야합니다. – marcoow

    +0

    모든 자산은 다양한 AWS 서비스 (S3, Route53 등 ...)를 사용하여 CDN에서 제공되므로 실제로 사용할 수있는 nginx 또는 apache 구성이 없습니다. – alvincrespo

    +0

    예, UI가 API와 통신하기 때문에 프론트 엔드 애셋의 호스팅이 CDN을 통해 제공됩니다. – alvincrespo

    답변

    4

    클라이언트에서 수행하면 실제 보안이 추가되지 않으므로 서버에서 HTTP에서 HTTPS로 리디렉션해야합니다.

    생각해 보면, 사용자는 안전하지 않은 엔드 포인트에서 브라우저에 애플리케이션을 다운로드 한 후 아무 것도 신뢰할 수 없다고 생각하십시오. 서버 기반 리디렉션조차도 신뢰할 수없는 종단점의 리디렉션 자문에 의존하기 때문에 문제가 있습니다. 사용자는 처음 신뢰할 수있는 시작 지점에서 실제로 액세스해야합니다. 그렇지 않으면 모든 베팅이 해제됩니다. 이는 보안 참조 문제로 알려져 있으며 SSL 인증서의 비즈니스 모델로 인해 해결되지 않을 가능성이 높습니다.

    신뢰할 수있는 HTTPS 도메인의 신뢰할 수없는 HTTP 도메인의 쿠키는 클라이언트에서 쿠키를 인증 할 방법이없는 한 실제로 신뢰해서는 안됩니다. HTTP/HTTPS 사이의 쿠키 공유에 대해서는 RFC 2109 (4.2.2 섹션 - 쿠키 구문 참조)에서 다룹니다.

    이 의미 :

    • 와 쿠키 세트 "보안"에만 HTTPS에 사용할 수
    • "보안"HTTP 또는 HTTPS에 사용할 수없는 쿠키 세트.