Pregunta

OK, aquí está mi situación: Tengo una aplicación ASP.NET Web Forms que está instalada y ejecutándose en mi sitio SP 2013 IIS. SP es la instalación para usar Windows Auth. Sé que esto es muy inusual y no se recomienda, pero por ahora tengo que ir de esta manera. I.E. No tengo tiempo para convertir esto y una serie de otras aplicaciones ASP.NET a las aplicaciones SP. Lo que estoy tratando de hacer es obtener al usuario que ha iniciado sesión en SP y usar esa información para autenticar en mi aplicación ASP.NET, y tampoco, no solicite autenticación en ASP.NET. Pienso por la naturaleza de la aplicación .NET que se ejecuta en el mismo IIS que SP 2013 no le pedirá a los credos de autenticación una segunda vez. ¡Pero cómo obtener información de usuario del token?

Tengo código como

Dim strEmailAddress As String = HttpContext.Current.User.Identity.Name.ToLower

en mi asp.net (vb.net) y lo que devuelve es: 0 # .w | SMG \ MYUSER

Y, por lo tanto, como entiendo, SP está utilizando la autenticación basada en reclamaciones y esto es un token de reclamación. Mi pregunta es ¿cómo analizar / aceptar este token para obtener el nombre de usuario para luego usarlo en mi ASP.NET?

Alguien en otra parte de la red ha mostrado lo siguiente como una solución, pero creo que mi aplicación no puede usar el Microsoft.SharePoint.Administration.Cramspace. ¿Es tan simple como ese?

string userName = null;
SPClaimProviderManager mgr = SPClaimProviderManager.Local;
if (mgr != null)
{
    userName = mgr.DecodeClaim(SPContext.Current.Web.CurrentUser.LoginName).Value;
}

Como entiendo, SPClaimProvidermanager está en Microsoft.SharePoint.Administration.Cramspace, pero ¿cómo puedo hacer que se haga referencia en mi ASP.NET? Ni siquiera puedo encontrar esa DLL en el servidor SP 2013.

¿Fue útil?

Solución 2

I was able to get this to work using the approach above outlined in my question - i was able to copy Microsoft.Sharepoint assembly from server and reference it in my ASP.NET project. The Microsoft.SharePoint.Administration.Claims namespace is found in the Microsoft.Sharepoint assembly

Otros consejos

The key is to have both SharePoint and your app use the same authentication source.

So, either your app must change to Windows Auth (aka Integrated NTLM), or SharePoint must use forms (or claims that is based on the same user store).

Licenciado bajo: CC-BY-SA con atribución
scroll top