Попытка понять файлы cookie и аутентификацию CakePHP

Я пытаюсь выяснить файлы cookie CakePHP и удовлетворить мои несколько необычные требования к аутентификации.

У меня есть система сбора данных на основе CakePHP, которая теперь интегрируется с системой отчетности, созданной с помощью программного обеспечения COTS. Доступ к системе отчетов должен контролироваться, и, если я не хочу дублировать все учетные записи пользователей в обеих системах, мне нужна система отчетов, чтобы можно было узнать, аутентифицирован ли пользователь в моей системе CakePHP.

Система отчетов позволяет мне загружать класс Java и выполнять функцию при первом поступлении запроса отчета от клиента. Итак, моя идея заключалась в том, чтобы

  1. Проверьте входящий запрос отчета и извлеките файл cookie, используемый моим сайтом CakePHP для аутентификации / идентификации сеанса.
  2. Отправьте запрос от функции Java к действию reportauth на сайте CakePHP с прикрепленным файлом cookie
  3. Действие reportauth в CakePHP затем проверяет, вошел ли пользователь на сайт CakePHP, и возвращает зашифрованный ответ функции Java, определяющей роль пользователя.

Я могу получить файл cookie, отправить его в запросе и по отдельности поделиться зашифрованной информацией между PHP и Java.

Однако, когда я использую «свежий» файл cookie (файл cookie, который мой браузер неоднократно отправляет с запросами на сайт CakePHP после нового входа в систему) в моем запросе Java, в ответе говорится, что пользователь не вошел в систему. Если я затем перезагружу сайт в своем браузере, я выйду из системы. Я подозреваю, что в файле cookie может быть какая-то дополнительная информация о пользовательском агенте (?), Из-за которой запрос, полученный из Java, будет отброшен, а этот сеанс разрушен в целях безопасности, но я недостаточно хорошо знаю систему. Я думаю, что могу видеть, как CakePHP защищает от перехвата сеанса (что обычно меня радует).

Может ли кто-нибудь сказать мне, есть ли способ обойти эту проблему? Предпочтительно тот, который не включает настраиваемые компоненты аутентификации в CakePHP, поскольку сайт сбора данных уже работает, и срок моих отчетов не за горами.

Любая помощь очень ценится.


person tomfumb    schedule 29.09.2011    source источник


Ответы (1)


Одно решение:

Получите CakePHP для хранения случайного токена в отдельном файле cookie и в виде поля в пользовательской таблице.

Затем заставьте приложение Java захватить токен и отправить его в приложение cakephp для получения сведений о пользователе.

В качестве альтернативы, аутентифицируйте его в самом приложении CakePHP и передайте идентификатор сеанса, чтобы торт использовал правильную сессию. Обратите внимание: настройку с помощью этой функции необходимо выполнить до вызова session_start ().

person Ivo    schedule 30.09.2011
comment
спасибо за предложение, я думаю, что в конечном итоге я создам отдельный зашифрованный файл cookie при входе в систему, который содержит роль пользователя и время истечения срока действия файла cookie. - person tomfumb; 01.10.2011