Estoy intentando activar el inicio de sesión tanto en ActiveDirectory como en formularios estándar, pero una cosa me está deteniendo. No puedo obtener el nombre del usuario de Windows actual. Lo más cercano que tengo es var i = WindowsIdentity.GetCurrent();
, pero eso me da el nombre del usuario del grupo de aplicaciones de IIS. Tengo Autenticación anónima, Autenticación de formularios y Autenticación de Windows habilitada en IIS. Puedo cargar usuarios desde AD así que supongo que mi web.config está configurado correctamente.Nombre de usuario actual de ActiveDirectory en ASP.NET
Editar: Este es mi web.config (utilizando un proveedor de la fachada):
<membership defaultProvider="HybridMembershipProvider">
<providers>
<clear />
<add name="HybridMembershipProvider" type="MyApp.Data.HybridMembershipProvider" AspNetProviderName="AspNetSqlMembershipProvider" ActiveDirectoryProviderName="ADMembershipProvider" />
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MyAppConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
<add name="ADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADConnectionString"
attributeMapUsername="sAMAccountName" enableSearchMethods="true" attributeMapEmail="mail"/>
</providers>
</membership>
Edición 2: Aquí está mi configuración de seguridad de IIS.
¿Podría explicarnos sus dos primeros puntos un poco más, por favor? ¿Qué quiere decir "si esa información está en el proveedor de membresía de formularios/AD"? Son usuarios y puedo consultar AD por nombre de usuario. "De lo contrario, tendrá que consultar AD para obtener su nombre." -Puedo hacer esto si tengo su nombre, pero ¿cómo lo haría para obtener su nombre? – Echilon
Respuesta editada para usted, vuelva a leer –
El problema que tengo es que 'Thread.CurrentPrincipal.Identity.Name ' está vacío, no puedo obtener el nombre de usuario. – Echilon