Отображение текущего аутентифицированного пользователя Sharepoint из веб-части средства просмотра страниц asp.net
-
02-07-2019 - |
Вопрос
Я создаю отдельную страницу asp.net, которую необходимо внедрить в сайт SharePoint с помощью веб-части средства просмотра страниц.Страница asp.net публикуется на том же сервере через другой порт, что дает мне URL-адрес для встраивания.
Требование заключается в том, что после проверки подлинности пользователя с использованием проверки подлинности Sharepoint он переходит на страницу, содержащую веб-часть asp.net, для получения дополнительных параметров.
Что мне нужно сделать на этой странице asp.net, так это запросить в Sharepoint текущее аутентифицированное имя пользователя, а затем отобразить его на странице из кода asp.net.
Все это работает нормально, когда я отлаживаю приложение из VS, но при публикации и отображении через Sharepoint я всегда получаю NULL как пользователь.
Любые предложения о том, как лучше всего заставить это работать, будут высоко оценены.
Решение
Если вы хотите получить текущего пользователя, прошедшего проверку подлинности, из контекста SharePoint, вам необходимо оставаться в контексте SharePoint.Это означает размещение вашего пользовательского веб-приложения в SharePoint (см. http://msdn.microsoft.com/en-us/library/cc297200.aspx).Затем из вашего пользовательского приложения укажите ссылку на Microsoft.SharePoint и используйте объект SPContext для получения имени пользователя.Например:
SPContext.Current.Web.CurrentUser.LoginName
Вы по-прежнему можете использовать веб-часть средства просмотра страниц для ссылки на URL-адрес сайта, который теперь находится в контексте SharePoint.
Другие советы
Спасибо огромное за ответы!
Оказывается, пока страница asp.net использует тот же URL-адрес и порт, что и сайт Sharepoint, аутентификация работает на обоих сайтах.
Решение состоит в том, чтобы использовать виртуальный каталог внутри сайта SharePoint и установить там страницу asp.net.
Когда это работает в режиме отладки, используется ли это в SharePoint?
Ваша страница и сайт Sharepoint также могут находиться на разных серверах, что касается аутентификации. Чтобы получить информацию, вам может потребоваться передать ее через QueryString из веб-части, если вы можете, или вам может потребоваться это сделать. создайте для этого свою собственную веб-часть (просто поместите IFRAME в часть с src, установленным на вашей странице, с QueryString, передающим имя пользователя).
Кажется, что это будет проблемой безопасности, если вы используете имя для чего-либо - если вы просто отображаете его, то, вероятно, все в порядке.
Если вам действительно необходимо пройти аутентификацию, возможно, вам придется добавить аутентификацию в файл web.config сайта, на котором размещена ваша отдельная страница.
редактировать:Я думаю, вам лучше поместить свою страницу на тот же порт и сервер, что и SharePoint.
Я подозреваю, что вам будет сложно конкретно запросить у SharePoint текущее имя пользователя, аутентифицированное.Я не могу придумать способ легко получить доступ к контексту SharePoint из отдельного веб-приложения, как вы описываете.
Я не знаю, какую схему аутентификации вы используете, но вы можете рассмотреть возможность использования Kerberos, поскольку я обнаружил, что он может немного упростить подобные сценарии, разрешив делегирование и передачу учетных данных от приложения к приложению. или сервер к серверу.