Отображение текущего аутентифицированного пользователя Sharepoint из веб-части просмотра страниц asp.net - PullRequest
5 голосов
/ 22 сентября 2008

Я создаю отдельную страницу asp.net, которую необходимо встроить в сайт sharepoint с помощью веб-части Viewer. Страница asp.net публикуется на том же сервере в другом порту, давая мне URL для встраивания.

Требование состоит в том, что после аутентификации пользователя с использованием аутентификации Sharepoint они переходят на страницу, содержащую веб-часть asp.net для получения дополнительных параметров.

На этой странице asp.net мне нужно запросить Sharepoint для текущего аутентифицированного имени пользователя, а затем отобразить его на странице из кода asp.net.

Это все работает нормально, когда я отлаживаю приложение от VS, но когда публикуется и отображается через Sharepoint, я всегда получаю NULL как пользователь.

Буду очень признателен за любые предложения о том, как заставить это работать.

Ответы [ 4 ]

7 голосов
/ 22 сентября 2008

Если вы хотите извлечь аутентифицированного пользователя из контекста SharePoint, вам нужно оставаться в контексте SharePoint. Это означает размещение вашего пользовательского веб-приложения в SharePoint (см. http://msdn.microsoft.com/en-us/library/cc297200.aspx). Затем из вашего пользовательского приложения обратитесь к Microsoft.SharePoint и используйте объект SPContext для получения имени пользователя. Например:

SPContext.Current.Web.CurrentUser.LoginName

Вы все еще можете использовать веб-часть Viewer для ссылки на URL-адрес сайта, который теперь находится в контексте SharePoint.

1 голос
/ 25 сентября 2008

Спасибо, куча за ответы!

Оказывается, что пока страница asp.net использует тот же URL-адрес и порт, что и сайт Sharepoint, аутентификация работает на обоих сайтах.

Решение состоит в том, чтобы использовать виртуальный каталог внутри сайта sharepoint и установить там страницу asp.net.

0 голосов
/ 22 сентября 2008

Я подозреваю, что вам будет сложно специально запросить у SharePoint текущее аутентифицированное имя пользователя. Я не могу придумать, как легко получить доступ к контексту SharePoint из отдельного веб-приложения, которое вы описываете.

Я не знаю, какую схему аутентификации вы используете, но вы можете рассмотреть возможность использования Kerberos, поскольку я обнаружил, что он может немного упростить подобные сценарии, разрешив делегирование и передачу учетных данных приложение к приложению или сервер к серверу.

0 голосов
/ 22 сентября 2008

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

Ваша страница и сайт Sharepoint могут также находиться на разных серверах в том, что касается аутентификации - для того, чтобы получить информацию, вам, возможно, потребуется передать ее через QueryString из веб-части, если вы можете - или вы для этого может потребоваться создать собственную веб-часть (просто поместите IFRAME в часть с src, установленным на вашу страницу, с QueryString, передающей имя пользователя).

Похоже, что это было бы проблемой безопасности, если вы используете имя для чего-либо, хотя - если вы просто отображаете его, то, вероятно, все в порядке.

Если вам действительно необходимо пройти аутентификацию, вам может потребоваться добавить аутентификацию в web.config сайта, на котором размещена ваша отдельная страница.

edit: Я думаю, вам повезет, если вы разместите свою страницу на том же порту и сервере, что и SharePoint.

...