Итак, я пытаюсь написать php SOAP-клиент, который требует, чтобы пользователь передал свои учетные данные для входа на удаленный SOAP-сервер. Вот установка / дилемма:
- Пользователь заходит на локальный сайт с использованием локальных учетных данных и переходит на страницу с SOAP-клиентом.
- Теперь пользователю предлагается ввести учетные данные для удаленного сервера Soap, которые, кстати, такие же, как те, которые используются для входа на локальный сайт (9 раз из 10) через форму POST.
- Клиент передает учетные данные в заголовке SOAP вместе с запросом SOAP, клиент выводит ответ сервера SOAP.
- Сценарий заканчивается, пользователь видит выходные данные.
Теперь пользователю нужны некоторые другие данные, относящиеся к исходному выводу. Проблема в том, что переменная $ _POST теперь давно исчезла. Пользователь должен включить учетные данные вместе со следующим запросом. Повторяйте до тех пор, пока пользователь не решит, что проще искать данные другим способом, и не разочаруется в классном SOAP-клиенте.
К серверу, на котором размещена веб-служба, можно получить прямой доступ через веб-клиент, а аутентификация поддерживается с помощью файла cookie. Однако, когда сервер запрашивается через WDSL, он не ищет куки или другой сеанс на стороне браузера; он просто проверяет, содержит ли SOAP-запрос учетные данные в заголовке.
Итак, есть две версии этого вопроса:
1) Есть ли способ, чтобы учетные данные локального сеанса передавались в SOAP-запрос, таким образом сохраняя логины до одного? (Имейте в виду, что я не контролирую метод аутентификации даже на локальной стороне. Он управляется собственным модом Apache, который контролирует аутентификацию для любого и каждого пользователя в системе, охватывая десятки отделов, над которыми у меня нет юрисдикции. Я просмотрел глобальные переменные и не обнаружил никаких намеков на учетные данные, но я мог бы просто подумать о некоторых базовых функциях безопасности PHP / Apache).
2) Существует ли безопасный и надежный способ для PHP обрабатывать учетные данные после вторичного входа в систему, чтобы эти учетные данные могли использоваться в течение некоторого установленного промежутка времени (скажем, 30-минутный сеанс?). Имейте в виду, что, основываясь на первом пункте, эти учетные данные являются очень конфиденциальными, поэтому не должно быть простого способа, чтобы кто-то копался в них и выводил эти учетные данные (или входил в какую-либо БД, чтобы увидеть их и т. Д.)
Извините, если это звучит параноидально. Я не привык обрабатывать учетные данные безопасности, кроме простого: «Здесь вы вводите свой пароль ... Хорошо, теперь, когда все знают друг друга до конца сессии, я могу вернуться к выводу полезных вещей».
Даже ссылка на какие-либо базовые функции безопасности будет полезным началом.