Доброго вечера.
Подскажите, возможно, есть какое-либо решение.
Есть корпоративный портал на SharePoint и есть сайт на php (также в корпоративной сети).
На php сайте веду лог посещений, в который помимо стандартной информации пишу данные: ip пользователя и имя ПК. Но данной информации мало, необходимо также логировать сетевой логин пользователя (логин AD).
Аутентификация на обоих сайтах реализована без ручного ввода пароля, посредством windows аутентификации.
Исключительно средствами php, как я понял, логин пользователя не узнать.
Поэтому я на SharePoint создал небольшую страничку, которая генерит только одну строку - логин пользователя.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<%@ Page Language="C#" %>
<%@ Register tagprefix="SharePoint" namespace="Microsoft.SharePoint.WebControls" assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=34564634564567" %>
<WebPartPages:AllowFraming runat="server" />
<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=10" />
<title>Test</title>
</head>
<body>
<asp:LoginName id="LoginName1" runat="server" FormatString ="UserLogin: {0}" /><br/>
</body>
</html>
Данную страницу посредством iframe я передал на php-сайт. Получился кроссдоменный iframe.
<iframe src="http://portal.sharepoint.ru/sites/SitePages/user.aspx" id='frame' width='700' height='50' frameborder='0'></iframe>
Iframe работает, логин отображается корректно.
Можно ли как-то теперь средствами php из этого кроссдоменного iframe извлечь в переменную контент (содержимое) страницы?
Я также пробовал через curl (post и get) обращаться к нужной странице SharePoint, но мне выдает ошибку "401 not authorized". Хотя через браузер всё нормально открывается. Если проверять реализованный curl в рамках одного домена, то всё работает. А вот при попытке извлечь данные с другого домена (в данном случае, SharePoint) - ошибка 401.
<?php
$q = 'http://portal.sharepoint.ru/sites/SitePages/user.aspx';
$p = array(
'Host' => 'portal.sharepoint.ru',
'User-Agent' => 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36',
'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding' => 'gzip, deflate, sdch',
'Accept-Language' => 'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4',
);
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $q);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $p);
$content = curl_exec ($ch);
echo $content;
?>
Прав на сайте SharePoint немного и особо там ничего менять не могу. Разве что страницы aspx создать с нужным мне содержимым.
Была еще идея логирование реализовать сайте SharePoint, которое срабатывало бы при каждом запуске iframe. Но на SharePoint не понимаю, как это можно сделать средствами aspx + js.