Pregunta

Estoy desarrollando un sitio web de intranet de asp.net con un ActiveDirectoryMembershipProvider y un SqlProfileProvider.

Uno de los requisitos de mi sitio web es tener un " Cumpleaños " página, que me obliga a enumerar todos los perfiles y recuperar la información de cumpleaños de ella.

Abordé el problema de la siguiente manera:

  • Invoque el método estático Membership.GetAllUsers ();
  • Iterar a través de la lista de usuarios y recuperar el perfil del nombre de usuario del miembro

Sin embargo, este enfoque falló por los siguientes motivos:

  • La aplicación web se hace pasar por el usuario registrado actual para recuperar sus detalles de AD (identidad suplantada = "verdadero" en el web.config), así que obtengo una excepción " acceso denegado " al intentar invocar los GetAllUsers
  • Si intento hacer que la aplicación web se haga pasar por una cuenta de superusuario, AD devuelve los nombres de usuario como formato de nombre de usuario @ nombre de dominio, pero en mi proveedor de perfil se almacenaron inicialmente como formato de nombre de dominio \ nombre de usuario.

Entonces, ¿cómo resolvería este problema para recuperar la lista completa de perfiles para cualquier miembro de la organización?

¿Fue útil?

Solución 2

Otros consejos

Aunque nunca lo he hecho antes, podría intentar crear un contexto de suplantación secundario, que cuando se establezca, la llamada a GetAllUsers debería tener éxito.

Echa un vistazo a http://chiragrdarji.blogspot.com /2007/03/impersonation-using-code.html , este capítulo parece haber logrado un cambio en el contexto de seguridad al usar la clase System.Security.Principal.WindowsIdentity junto con System.Security.Principal.WindowsImpersonationContext . Podría valer la pena echarle un vistazo.

ProfileInfoCollection profiles = ProfileManager.GetAllProfiles(ProfileAuthenticationOption.All);
foreach (ProfileInfo pi in profiles)
{
    ProfileCommon p = Profile.GetProfile(pi.UserName);
    countries.Add(p.Country);        
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top