Question

Je développe un site Web intranet asp.net avec un ActiveDirectoryMembershipProvider et un SqlProfileProvider.

L’une des exigences de mon site Web est d’avoir un " Anniversaires " page, ce qui m'obligerait à répertorier tous les profils et à récupérer les informations de date de naissance.

J'ai abordé le problème comme suit:

  • Invoquer la méthode statique Membership.GetAllUsers ();
  • Parcourez la liste des utilisateurs et récupérez le profil à partir du nom d'utilisateur du membre

Cette approche a toutefois échoué pour les raisons suivantes:

  • La webapp emprunte l'identité de l'utilisateur connecté actuel pour récupérer ses détails AD (identité impersonate = "true" dans le fichier Web.config), de sorte que j'obtiens une exception "l'accès est refusé". en essayant d'invoquer les GetAllUsers
  • Si j'essaie de faire en sorte que l'application Web emprunte l'identité d'un compte de super utilisateur, AD renvoie les noms d'utilisateur sous le format nom d'utilisateur @ nom de domaine, mais dans mon fournisseur de profil, ils étaient initialement stockés sous le format nom de domaine \ nom d'utilisateur.

Alors, comment résoudre ce problème pour récupérer la liste complète des profils de n'importe quel membre de l'organisation?

Était-ce utile?

La solution 2

Autres conseils

Bien que je ne l'aie jamais fait auparavant, vous pouvez essayer de créer un contexte d'emprunt d'identité secondaire, mais une fois établi, l'appel à GetAllUsers devrait réussir.

Découvrez http://chiragrdarji.blogspot.com /2007/03/impersonation-using-code.html , ce chapitre semble avoir modifié son contexte de sécurité en utilisant la classe System.Security.Principal.WindowsIdentity avec . System.Security.Principal.WindowsImpersonationContext . Cela vaut peut-être la peine de vérifier.

ProfileInfoCollection profiles = ProfileManager.GetAllProfiles(ProfileAuthenticationOption.All);
foreach (ProfileInfo pi in profiles)
{
    ProfileCommon p = Profile.GetProfile(pi.UserName);
    countries.Add(p.Country);        
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top