Попытка понять куки-файлы CakePHP и аутентификацию - PullRequest
0 голосов
/ 29 сентября 2011

Я пытаюсь определить файлы 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, поскольку сайт сбора данных уже работает, и мой срок представления отчетов не за горами.

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

1 Ответ

1 голос
/ 30 сентября 2011

Один обходной путь:

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

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

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

...