Question

OK, voici ma situation: j'ai une application ASP.NET Web Forms installée et exécutée sur mon site IIS SP 2013. SP est configuré pour utiliser Windows Auth. Je sais que cela est très inhabituel et non recommandé, mais pour le moment, je dois y aller de cette façon. I.e. Je n'ai pas le temps de convertir cela et un certain nombre d'autres applications ASP.NET aux applications SP. Ce que j'essaie de faire est d'obtenir l'utilisateur qui est connecté à SP et d'utiliser cette information pour authentifier à mon application ASP.NET - et non pas à l'invite d'AUTH sur ASP.NET. Je pense que par la nature de l'application .NET s'exécutant dans le même IIS que SP 2013, il ne demandera pas aux crédits auteurs de la 2e fois., Mais comment obtenir des informations utilisateur du jeton?

J'ai un code comme

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

dans mon asp.net (vb.net) et ce qu'il revient: 0 # .w | smg \ myuser

Et donc, si je comprends, SP utilise une authentification basée sur les réclamations et c'est un jeton de réclamation. Ma question est de savoir comment analyser / accepter ce jeton pour obtenir le nom d'utilisateur pour l'utiliser dans mon asp.net?

Quelqu'un ailleurs sur le Net a montré ce qui suit comme solution, mais je pense que mon application ne peut pas utiliser l'espace de noms Microsoft.SharePoint.Administration.Claims. Est-ce aussi simple que cela?

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

Si je comprends bien, SpClimProvidermanManager est dans le message de noms Microsoft.SharePoint.Administration.Claims, mais comment puis-je obtenir cela référencé dans mon ASP.NET. Je ne peux même pas trouver cette DLL sur le serveur SP 2013.

Était-ce utile?

La solution 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

Autres conseils

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).

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top