Sto provando a far funzionare sia ActiveDirectory che i moduli standard, ma una cosa mi impedisce. Non riesco a ottenere il nome dell'utente Windows corrente. Il più vicino che ho è var i = WindowsIdentity.GetCurrent();
, ma questo mi dà il nome dell'utente del pool di app IIS. Ho autenticazione anonima, autenticazione basata su form e autenticazione di Windows abilitata in IIS. Posso caricare utenti da AD quindi presumo che il mio web.config sia configurato correttamente.ActiveDirectory Nome utente corrente in ASP.NET
Edit: Questo è il mio web.config (usando un provider di facciata):
<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>
Edit 2: Ecco la mia configurazione di sicurezza di IIS.
Potresti spiegare i tuoi primi due punti un po 'di più per favore? Cosa intendi "se questi dati sono nel provider di appartenenza/AD dei moduli". Sono un utente e posso interrogare AD per nome utente. "Altrimenti dovrai interrogare AD per ottenere il loro nome." -Posso farlo se ho il loro nome, ma come lo farei per ottenere il loro nome? – Echilon
Risposta modificata per te, leggi ancora –
Il problema che ho è che 'Thread.CurrentPrincipal.Identity.Name ' è vuoto, non riesco a ottenere il nome utente. – Echilon