2013-12-11 2 views
0

내 사이트는 중요한 정보를 다루지 않으므로 SSL을 필요로하지 않습니다. 그러나 분명히 SSL을 통해 사용자 암호를 전송하고 싶습니다. 이 사이트는 Heroku에 있으며 Heroku는 Herokuapp의 하위 도메인에서 무료 piggyback SSL을 제공합니다. https://example.herokuapp.com을 방문하면 http://example.com과 같은 사이트 및 데이터에 액세스합니다.기본 웹 사이트 로그인에 Heroku Piggyback SSL을 사용할 수 있습니까?

사용자가 example.herokuapp.com의 iframe에 로그인하여 실제 사이트 example.com에 로그인하도록 허용하고 싶습니다. 그러나 서로 다른 도메인을 사용하기 때문에 서로 다른 쿠키를 사용하고 하나의 도메인에 로그인하면 다른 도메인에 로그인하지 않습니다. 내가 이것을 회피하고 herokuapp 로그인이 내 메인 도메인에서도 작동하도록 할 수있는 방법이 있습니까?

답변

1

보안상의 이유로 share cookies across different domains을 사용할 수 없습니다.

할 수있는 일은 SSL로 보호 된 사이트에서 로그인 및 인증을 수행하고, 일회 토큰을 설정 한 다음 토큰을 전달하는 주 응용 프로그램으로 사용자를 리디렉션하는 것입니다. 토큰이 일치하고 만료되지 않은 경우 기본 응용 프로그램에서 사용자를 인증하십시오.

동일한 접근법은 this answer에서 더 광범위하게 설명됩니다.

누군가가 '로그인'링크를 클릭하거나 영구 로그인 쿠키를 제공하면 로그인 양식에서 중앙 도메인에있는 URL로 궁극적으로 데이터를 전송합니다. 도메인 (사용자의 편의를 위해 나중에 다시 리디렉션 됨).

중앙 도메인의이 페이지는 세션 쿠키 설정 (로그인이 잘 된 경우)으로 진행하고 사용자가 로그인 한 도메인으로 다시 리디렉션합니다. 해당 세션에 고유 한 URL에 특별히 생성 된 토큰이 있습니다 .

위성 URL의 페이지는 토큰이 세션에 대해 생성 된 토큰과 일치하는지 확인한 후 토큰이없는 자체로 리디렉션하고 로컬 쿠키를 설정합니다. 이제 위성 도메인에도 세션 쿠키가 있습니다. 이 리디렉션은 URL에서 토큰을 지우므로 사용자 또는 크롤러가 해당 토큰이 포함 된 URL을 기록 할 가능성은 없습니다. 그렇다고해도 문제가 아니어도 토큰은 일회용 토큰이 될 수 있습니다.

관련 문제