@Maxim_SV

Как логин пользователя на SharePoint передать на другой сайт?

Доброго вечера.
Подскажите, возможно, есть какое-либо решение.

Есть корпоративный портал на 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.
  • Вопрос задан
  • 326 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Исключительно средствами php, как я понял, логин пользователя не узнать.
Поняли неверно: линк.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы