Domanda

Sto sviluppando un sito Web intranet asp.net con un ActiveDirectoryMembershipProvider e un SqlProfileProvider.

Uno dei requisiti del mio sito Web è di avere un " Compleanni " pagina, che mi richiederebbe di elencare tutti i profili e di recuperare le informazioni sul compleanno da esso.

Ho affrontato il problema come segue:

  • Richiama il metodo statico Membership.GetAllUsers ();
  • Scorrere l'elenco degli utenti e recuperare il profilo dal nome utente del membro

Questo approccio, tuttavia, non è riuscito per i seguenti motivi:

  • La webapp sta impersonando l'utente attualmente registrato per recuperare i suoi dettagli AD (identità impersonata = "vero" nel web.config), quindi ottengo un'eccezione "accesso negato" quando si tenta di richiamare GetAllUsers
  • Se provo a fare in modo che la webapp rappresenti un account superutente, AD restituisce i nomi utente come nome utente @ formato nome dominio, ma nel mio fornitore del profilo sono stati inizialmente memorizzati come formato nome dominio \ nome utente.

Quindi, come aggireresti questo problema per recuperare l'intero elenco di profili per qualsiasi membro dell'organizzazione?

È stato utile?

Soluzione 2

Altri suggerimenti

Anche se non l'ho mai fatto prima, potresti provare a creare un contesto di rappresentazione secondario, che una volta stabilita, la chiamata a GetAllUsers dovrebbe avere successo.

Dai un'occhiata a http://chiragrdarji.blogspot.com /2007/03/impersonation-using-code.html , questo tipo sembra aver ottenuto un cambiamento nel contesto della sicurezza usando la classe System.Security.Principal.WindowsIdentity insieme a System.Security.Principal.WindowsImpersonationContext . Potrebbe valere la pena dare un'occhiata.

ProfileInfoCollection profiles = ProfileManager.GetAllProfiles(ProfileAuthenticationOption.All);
foreach (ProfileInfo pi in profiles)
{
    ProfileCommon p = Profile.GetProfile(pi.UserName);
    countries.Add(p.Country);        
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top