0

CakePHP 쿠키를 알아 내고 약간 특이한 인증 요구 사항을 충족하려고합니다.CakePHP 쿠키 및 인증을 이해하려고 시도합니다.

저는 CTSPHP 기반 데이터 수집 시스템을 가지고 있으며, 현재 COTS 소프트웨어로 구축 된보고 시스템과 통합되고 있습니다. 보고 시스템은 액세스 제어가 필요하고 두 시스템에서 모든 사용자 계정을 복제하지 않으면 사용자가 내 CakePHP 시스템에서 인증되었는지 알아낼 수있는보고 시스템이 필요합니다.

보고 시스템을 사용하면 클라이언트의 보고서 요청이 처음 도착할 때 Java 클래스를로드하고 함수를 실행할 수 있습니다. 그래서 내 생각은

  1. 이었다 CakePHP의 사이트 내에서 'reportauth'행동 자바 기능의 요청을 보내기 들어오는 보고서 요청을 검사하고 인증/세션 식별
  2. 내 CakePHP의 사이트에서 사용되는 쿠키를 추출
  3. 에게 CakePHP의 내 reportauth 동작은 사용자가 CakePHP의 사이트에 로그인 한 사용자의 역할을 식별하는 자바 함수에 암호화 된 응답을 반환하는 경우 다음 검사

내가 쿠키를 얻을 보낼 수 부착이 쿠키 그것은 다시 퀘스트와 별도로 PHP와 Java간에 암호화 된 정보를 공유 할 수 있습니다.

그러나 Java 요청에서 '새로운'쿠키 (브라우저가 새로운 로그인 후에 요청을 CakePHP 사이트에 반복적으로 보내는 쿠키)를 사용하면 사용자가 로그인하지 않았다고 응답합니다. 그런 다음 브라우저에서 사이트를 다시로드하면 로그 아웃됩니다. 쿠키에 사용자 에이전트 (?)에 대한 추가 정보가있을 수 있습니다. Java-sourced 요청이 튕겨져 세션이 안전을 위해 파괴되지만, 시스템을 충분히 알지 못합니다. CakePHP가 세션 하이재킹 (보통, 나를 행복하게 만들 것임)으로부터 보호한다고 생각합니다.

이 문제를 해결할 방법이 있다면 알려 줄 수 있습니까? 가급적이면 CakePHP의 커스텀 인증 컴포넌트가 필요하지 않습니다. 데이터 수집 사이트가 이미 생방송되어 있고보고 마감 기한이 멀지 않습니다.

도움을 주시면 감사하겠습니다.

답변

1

한 가지 해결 방법 :

CakePHP를 별도의 쿠키에 임의의 토큰을 저장하기 위해 가져 오기, 사용자 테이블에 필드로.

그런 다음 Java 응용 프로그램에서 토큰을 가져 와서 cakephp 응용 프로그램으로 보내 사용자의 세부 정보를 얻습니다.

또는 CakePHP 앱 자체로 인증하고 session id을 전달하여 올바른 세션을 사용하도록합니다. session_start()가 호출되기 전에 해당 함수로 설정해야합니다.

+0

제안 해 주신 데 대해 감사 드리며 로그인시 사용자의 역할과 케이크 쿠키가 만료되는 시간이 포함 된 별도의 암호화 된 쿠키를 작성하게 될 것입니다. – tomfumb