Frage

Ich entwickle eine asp.net Intranet-Website mit einem ActiveDirectoryMembershipProvider und einem SqlProfileProvider.

Eine der Anforderungen meiner Website ist eine „Geburtstage“ Seite haben, die mir verlangen würde alle Profile zur Liste und das Abrufen der Geburtstag Informationen von ihm.

Ich näherte mich dem Problem wie folgt:

  • invoke die Membership.GetAllUsers () statische Methode;
  • Iteration durch die Liste der Benutzer und das Profil von dem Benutzernamen
  • -Mitglied abrufen

Dieser Ansatz scheiterte jedoch aus den folgenden Gründen:

  • Die Webapp den aktuellen angemeldeten Benutzer einen Identitätswechsel seine AD Details abzurufen (identity impersonate = „true“ in der web.config), so erhalte ich eine Ausnahme „Zugriff verweigert“ beim Versuch, die GetAllUsers
  • aufzurufen
  • Wenn ich versuche, die Webapp AD liefert ein Super-Benutzerkonto dann die Benutzernamen als Benutzername @ domain-name-Format, aber in meinem Profil-Provider sie wurden zunächst gespeichert als Domain-Name \ Benutzername Format ausgeben zu machen.

So, wie würden Sie, um dieses Problem gehen die ganze Liste der Profile für jedes Mitglied der Organisation abzurufen?

War es hilfreich?

Lösung 2

Andere Tipps

Obwohl ich habe es noch nie zuvor getan, können Sie einen sekundären Identitätswechsel Kontext zu erstellen versuchen, dass, wenn festgestellt, soll der Aufruf von GetAllUsers gelingen.

Hier finden Sie aktuelle http://chiragrdarji.blogspot.com /2007/03/impersonation-using-code.html erscheint dieser chap eine Änderung des Sicherheitskontextes erreicht haben von System.Security.Principal.WindowsIdentity Klasse zusammen mit System.Security.Principal.WindowsImpersonationContext verwenden. Könnte sich lohnen, Check-out.

ProfileInfoCollection profiles = ProfileManager.GetAllProfiles(ProfileAuthenticationOption.All);
foreach (ProfileInfo pi in profiles)
{
    ProfileCommon p = Profile.GetProfile(pi.UserName);
    countries.Add(p.Country);        
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top