2008-09-22 14 views
5

Estoy creando una página asp.net independiente que debe integrarse en un sitio sharepoint utilizando el elemento web Visor de página. La página asp.net se publica en el mismo servidor en un puerto diferente, dándome la URL para incrustar.Mostrando el usuario de Sharepoint autenticado actual de un asp.net Page Viewer Elemento web

El requisito es que, después de autenticar a un usuario mediante la autenticación Sharepoint, navegue a una página que contiene el elemento web asp.net para obtener más opciones.

Lo que tengo que hacer desde esta página asp.net es consultar Sharepoint para el nombre de usuario autenticado actualmente, luego mostrarlo en la página desde el código asp.net.

Todo funciona bien cuando depuro la aplicación de VS, pero cuando se publica y se muestra a través de Sharepoint, siempre obtengo NULL como usuario.

Cualquier sugerencia sobre la mejor manera de hacer que esto funcione sería muy apreciada.

Respuesta

7

Si desea recuperar el usuario autenticado actualmente del contexto de SharePoint, debe permanecer dentro del contexto de SharePoint. Esto significa alojar su aplicación web personalizada dentro de SharePoint (consulte http://msdn.microsoft.com/en-us/library/cc297200.aspx). Luego, desde su aplicación personalizada, haga referencia a Microsoft.SharePoint y use el objeto SPContext para recuperar el nombre de usuario. Por ejemplo:

SPContext.Current.Web.CurrentUser.LoginName 

Todavía se puede utilizar el elemento Web Visor de páginas para hacer referencia a la URL del sitio, que ahora se encuentra en el contexto de SharePoint.

0

Cuando funciona en depuración, ¿se está utilizando en SharePoint?

Su página y el sitio Sharepoint también podrían estar en servidores diferentes en lo que respecta a la autenticación: para obtener la información, puede que necesite pasarla a través de QueryString desde el sitio web, si puede, o es posible que deba crear su propio sitio web para hacer esto (simplemente ponga un IFRAME en la parte con el src configurado en su página con QueryString pasando el nombre de usuario).

Parece que esto sería un problema de seguridad si usas el nombre para cualquier cosa, si solo lo estás mostrando, entonces probablemente esté bien.

Si realmente necesita ser autenticado, es posible que necesite agregar autenticación en el sitio web del sitio que aloja su página independiente.

editar: Creo que sería mejor que pusieras tu página en el mismo puerto y servidor que SharePoint.

+0

no, en modo de depuración es independiente – BenB

0

Sospecho que tendrá dificultades para consultar SharePoint específicamente para el nombre de usuario autenticado actualmente. No puedo pensar en una forma de acceder fácilmente al contexto de SharePoint desde una aplicación web separada como la que está describiendo.

No sé qué tipo de esquema de autenticación está utilizando, pero es posible que desee considerar el uso de Kerberos, ya que he descubierto que puede facilitar este tipo de escenarios al permitir la delegación y el paso de credenciales de la aplicación a la aplicación o del servidor al servidor.

1

¡Muchísimas gracias por las respuestas!

Resulta que, siempre que la página asp.net esté utilizando la misma URL y el mismo puerto que el sitio Sharepoint, la autenticación funciona en ambos sitios.

La solución es utilizar un directorio virtual dentro del sitio sharepoint e instalar la página asp.net allí.

Cuestiones relacionadas