J'ai besoin d'effectuer de la recherche de l'emprunt d'identité dans SharePoint 2010 pour les Réclamations des utilisateurs. Pour mettre cela en contexte, je tiens d'abord à préciser de quelle manière je obtenir que cela fonctionne avec les comptes de Windows et ensuite discuter de Réclamations / WIF.
Les Comptes Windows
Je peux le faire pour le "classique" de Windows Intégrée des utilisateurs Authentifiés à l'aide de:
WindowsImpersonationContext wic = null;
try
{
WindowsIdentity impersonatedUser = new WindowsIdentity("john.doe@mydomain");
wic = impersonatedUser.Impersonate();
// do impersonated work here...
// in my case this is a SharePoint KeywordQuery
}
finally
{
if (wic != null)
{
wic.Undo();
}
}
Pour obtenir le ci-dessus pour travailler l'identité de compte doit être dans le même domaine que l'utilisateur en cours et je dois veiller à ce que l'application propriétaire de piscine est:
- Un compte de domaine dans un domaine qui a un "niveau fonctionnel de domaine Windows 2003 ou supérieur
- A "agir en tant que partie du système d'exploitation" privilège sur la zone locale
- A "emprunter l'identité d'un client après l'authentification" privilège sur la zone locale
(Note: si quelqu'un peut comprendre comment obtenir autour de la question où le compte courant doit être dans le même domaine que l'identité de compte, je suis toutes les oreilles.)
Les Revendications Des Comptes
Je voudrais faire la même chose avec les Revendications / WIF comptes. Ces comptes ne sont pas nécessairement associés à l'ANNONCE des comptes (j'ai besoin de croire qu'ils ne le sont pas).
Est-il un moyen de dire la STS que je veux emprunter l'identité d'un compte, en particulier, et pour me donner la marque appropriée pour ce compte? Je n'ai pas le mot de passe de l'utilisateur que je suis usurpation de l'identité.
Citant SharePoint Brew je dois composer avec mon code qui s'exécute sur un SharePoint web front end (WFE) qui appelle un Processeur de Requêtes via un WCF appel. Je veux que WCF appel à être dans le contexte de l'identité de l'utilisateur.
Le serveur web frontal de l' (Serveur1) webpart de recherche parle de proxy d'application de service. Les associés de recherche proxy d'application de service des appels locaux STS pour obtenir un jeton SAML pour l'utilisateur. Une fois le jeton SAML est recueillie, l'application de service de recherche proxy alors appel à un serveur exécutant le Processeur de Requêtes via WCF appel. Je vais appeler ce serveur "Serveur 2". 2 de serveur reçoit la demande entrante et valide le jeton SAML à l'encontre de ses locaux STS. Une fois validé, le Serveur 2 relie les différents composants afin de recueillir, de fusion, de sécurité et de garnitures de résultats de recherche. Serveur 2 envoie le garni résultats de la recherche à l'arrière du Serveur 1 qui sont ensuite présentés à l'utilisateur.
Un peu plus de recherches m'a conduit à chercher à ActAs et OnBehalfOf. Je crois que j'ai envie d'utiliser OnBehalfOf, mais je ne suis pas certain que l'un et l'autre travaillent encore. Quelques références que j'ai trouvés sont listés ci-dessous. De toute orientation est apprécié.