PHP EWS с аутентификацией на основе токенов Netscaler - PullRequest
0 голосов
/ 15 апреля 2019

Я использовал jamesiarmes / php-ews пару лет назад, чтобы экспортировать все мои элементы календаря с помощью скрипта cron.Аутентификация происходила по имени пользователя и паролю.Это работало отлично.

Теперь моя компания изменила политику и добавила аутентификацию на основе токенов, предоставляемую контроллером доставки Netscaler.

С этой структурой у меня две проблемы:

1) Перенаправление: вызов URL-адреса OWA (например, «owa.company.com/owa») без проверки подлинности вызывает перенаправление на страницу входа в Netscaler (например, «netscaler.company.com»).После успешной аутентификации перенаправление на страницу OWA выполнено.

Запуск моего скрипта для owa.company.com/owa приводит к

'SOAP client returned status of 302'

Я думаю / надеюсь, что это не такt перенаправлять вообще, если аутентификация прошла успешно.

2) Аутентификация: библиотека php-ews не поддерживает аутентификацию токена.Я надеюсь сделать «одноразовый» вход в систему, экспортировать информацию для входа в систему (например, куки-файлы), установить их с помощью собственных методов SOAP php (например, setSoapHeaders, setCurlOptions) и позволить сеансу / сценарию выполняться с поддержкой активности..

Внедрение всех (чтобы быть уверенным ;-)) файлов cookie домена company.com:

$cookies = array(
        'NSC_TMAA' => 'some_random_things',
        'NSC_TMAS' => 'some_random_things',
        'NSC_PERS' => 'some_random_things',
        'NSC_TASS' => 'https://owa.company.com/owa/EWS/Exchange.asmx',
        'UserContext' => 'some_random_things',
        'OutlookSession' => 'some_random_things'
);

foreach($cookies as $cookie_name => $cookie_value) {
  $client->__setCookie($cookie_name, $cookie_value);
}

Внедрение заголовков (не уверены, какие из них даже необходимы):

$curl_options = array(
  CURLOPT_HTTPHEADER => array(
    'Connection' => 'keep-alive',
    'Referer' => 'https://netscaler.company.com/',
    'Upgrade-Insecure-Requests' => '1',
    'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0',
    'DNT' => '1'
  )
);

$client->__setCurlOptions($curl_options);

Все еще ошибка SOAP 302.

Надеюсь, вы мне поможете.

...