Ecco lo sfondo. Ho avuto un progetto .NET MVC v1.0 che stavo cercando di proteggere utilizzando la modalità di autenticazione di Windows. Così mi sono messo il web.config per:La modalità di autenticazione di Windows in ASP.NET utilizza il nome del gruppo di Active Directory (pre-Windows 2000)?
<authentication mode="Windows" />
E poi andato nel mio controller e ha fatto la seguente:
[Authorize(Roles="IT")]
public class LicenseController : Controller
In dC abbiamo un gruppo chiamato "IT" e sono molti altri sono a parte questo gruppo. Una volta avuta questa impostazione, ho avviato una sessione di debug e ho provato ad andare a una qualsiasi delle azioni in quel controller e mi sono imbattuto in un 401. Cerco in alto e in basso in cerca di un posto in cui ho messo il cagnolino e non ho trovato nulla sbagliato. Dopo un po 'di difficoltà ho deciso di provare a cambiare "Autorizza" a un utente specifico e vedere se ha funzionato. Così ho cambiato il seguente:
[Authorize(Users="domain\\tnederveld")]
E basso ed ecco che ha funzionato. Così sono andato e ho aggiunto un gruppo diverso di cui ero membro e ho preso la dichiarazione di autorizzazione degli utenti e questo ha funzionato. Ho iniziato a esaminare le differenze tra i due gruppi di annunci e l'unica cosa diversa era che nel secondo gruppo ho provato il "Nome gruppo (pre-Windows 2000):" erano gli stessi. I gruppi "IT" "Nome gruppo (pre-Windows 2000):" era "Associati IT". Così ho provato a cambiare la dichiarazione di autorizzazione su:
[Authorize(Roles="IT Associates")]
E ha iniziato a funzionare. Ho pensato che si trattava di un problema di MVC, quindi per assicurarmi di averlo provato su un normale progetto Web Forms e di aver incontrato lo stesso problema.
Il vero kicker è che quando si utilizza UserPrincipal che fa parte di System.DirectoryServices.AccountManagement restituisce il gruppo "IT" quando si utilizza il metodo .GetGroups().
Perché sta succedendo?
Terry, se si desidera includere XML o frammenti di codice nel post (buona idea!), È necessario evidenziare tali righe e quindi utilizzare il pulsante "codice" (101 010) sulla barra degli strumenti dell'editor (o premere Ctrl-K) per formattare correttamente quelli. –