2014-02-06 2 views
0

여기에 그 문제가 있습니다 :다른 서버의 웹 사이트에 안전하게 로그인 하시겠습니까?

저는 로그인 시스템이없는 CakePHP 2 기반 웹 사이트 인 서버 1에 웹 사이트 A를 가지고 있습니다. 사용자가 로그인/암호를 입력 할 수있는 나는 또한 서버 2에서 웹 사이트 B가

의 로그인 시스템을 가진 다른 CakePHP의 웹 사이트는 첫 페이지에서 로그인 양식, (이 중요한 경우 자세한 내용은 CakePHP의 인증을 사용합니다) 그것에 접근하십시오.

이제 내가해야 할 일은 웹 사이트 B에 사용자를 기록하는 로그인 양식을 웹 사이트 B에 추가하는 것입니다 (웹 사이트 B에서 양식을 사용한 것처럼).

그럴 수 있습니까? 그렇다면 안전하게하기 위해 어떤 접근 방식을 취해야합니까? (즉, 사용자 자격 증명을 명백하게 노출하지 않고서는).

+0

문제가 발생하지 않습니다. 표준 로그인 일 경우 웹 사이트 B 데이터베이스에 연결하고 해당 자격 증명으로 로그인하면됩니다. – Eagle

답변

0

여러 사이트로 갈 수 있지만 한 번만 로그인 할 수 있도록이 작업을 수행한다고 가정합니다. 사이트가 도메인을 공유하지만 세션을 공유하도록 설정하여 다른 하위 도메인에서 호스팅되는 경우 제공 방법을 생각해 냈습니다. 도메인을 공유하는 웹 사이트에서만 작동하는 이유는 서로 관련이없는 두 개의 웹 사이트가 쿠키를 공유 할 수 없기 때문입니다. 쿠키를 공유 할 수 없기 때문에 세션을 공유해야합니다.

목표는 두 서버가 세션을 완전히 공유하도록하기 때문에 예를 들어 한 사이트의 플래시 메시지가 양쪽 모두에 표시되는 것과 같은 몇 가지 문제가 발생한다는 것입니다. Session 변수를 확장하여 결국 세션 변수가 속하는 서버를 지정하기 위해 접두사가있는 모든 세션 변수에 자동으로 추가합니다.

는 다음 단계의 개요입니다 :

  1. 로그인 서버는 아마 당신이 모두 서버에 설치해야합니다 핸들러 저장 memcache에 세션을 통해 공유 세션을 호스트 할 수 있어야합니다. 더 많은 것을 보십시요 : http://www.dotdeb.org/2008/08/25/storing-your-php-sessions-using-memcached/

  2. 로그인 서버의 위치는 로그인 체계를위한 모든 일정한 재료를 필요로하고 또한 저장의 일반적인 방법 대신에 공유 memcache 회의를 사용할 것이다 그래야 당신은 또한 서버를 위로 설정할 필요가있다 세션. 당신이 memcache를 설치 한 후 예, 그 php.ini 파일에 추가 :

    session.save_handler = memcache

    session.save_path = "tcp://[login server ip]:11211"

  3. 다른 서버의 사이트는 로그인 서버에 저장된 공유 memcache에 세션을 사용해야합니다, 그래서 php.ini는 로그인 서버와 같은 방식으로 설정하십시오. 그런 다음이 사이트에서 Auth 구성 요소를 설정하여 로그인해야하지만 실제로 로그인하려면 로그인 서버로 다시 리디렉션하십시오.

  4. 두 서버 모두에서 bootstrap.php에 ini_set('session.cookie_domain', '.' . ROOT_DOMAIN); 행을 추가하십시오. 여기서 루트 도메인은 둘 다 루트 도메인입니다. 따라서 test.com과 subdomain.test.com을 사용하는 경우 ROOT_DOMAIN은 "test"입니다. 이렇게하면 웹 사이트에서 세션 쿠키를 공유하게됩니다.

  5. 두 서버가 동시에 설정되어 있는지 확인하십시오. 시간이 맞지 않으면 서버 중 하나가 다른 서버보다 훨씬 오래되었다고 판단하여 세션이 너무 오래되었다고 생각하기 때문에 임의로 세션을 잃게됩니다.

관련 문제