J'ai un service WCF qui utilise wsHttpBinding avec la sécurité des messages et l'authentification Windows.Usurpation d'identité dans le service WCF hébergé dans SharePoint 2010 authentifié par revendications
Un client de service d'application console peut appeler le service, et je peux voir que les deux ServiceSecurityContext.Current.WindowsIdentity et Thread.CurrentPrincipal.Identity représentent le bon utilisateur.
Le paramètre currentprincipal est une IClaimsIdentity, comme prévu.
Le problème se produit lorsque j'essaie d'ouvrir un site Web SharePoint: j'obtiens une erreur d'accès refusé suggérant que l'identité usurpée ne peut pas être transmise à la base de données ou au serveur SharePoint Server. Tout cela est dans la même machine, donc il ne devrait pas y avoir de problèmes d'authentification double-hop. Est-ce que ce n'est pas la manière correcte d'effectuer une authentification sans tête par rapport à un service hébergé dans une application de réclamations?
Comment ouvrir le Web SP? Utilisez-vous la surcharge du constructeur qui accepte un SPUserToken? – Timores
J'ai aussi essayé ça. Il semble que mon IClaimsIdentity est un Microsoft.IdentityModel.WindowsClaimsIdentity, plutôt qu'un Microsoft.IdentityModel.ClaimsIdentity. Le constructeur SPUserToken de SharePoint lève une exception si l'objet IClaimsIdentity est tout sauf une ClaimsIdentity. – BoldBob
Je suppose que vous devez transformer les revendications. Avez-vous essayé d'instancier une ClaimsIdentity à partir d'une WindowsClaimsIdentity? – Timores