带有基于Netscaler令牌的身份验证的PHP EWS

时间:2019-04-15 20:14:12

标签: php token exchangewebservices netscaler

几年前,我用jamesiarmes/php-ews用cron脚本导出了所有日历项目。身份验证通过用户名和密码进行。效果很好。

现在,我的公司更改了其策略,并添加了Netscaler交付控制器提供的基于令牌的身份验证。

使用这种结构,我有两个问题:

1)重定向:调用未经身份验证的OWA URL(例如'owa.company.com/owa)会导致重定向到Netscaler登录页面(例如'netscaler.company.com')。认证成功后,将重定向到OWA页面。

针对owa.company.com/owa运行我的脚本会导致

'SOAP client returned status of 302'

我猜/希望,如果身份验证成功,它根本不会重定向。

2)身份验证:php-ews库不支持令牌身份验证。我的希望是进行“一次性”登录,导出登录信息(例如cookie),使用php本机SOAP方法(例如setSoapHeaders,setCurlOptions)进行设置,并让会话/脚本以一种保持活动的方式运行

注入域company.com的所有(肯定是;-))cookie:

$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错误。

希望你能帮助我。

0 个答案:

没有答案