it-swarm.it

Impossibile far funzionare l'autenticazione di Windows tramite local IIS

Quindi ho creato un nuovo progetto ASP.NET MVC usando il modello intranet. web.config contiene i valori appropriati (ad esempio <authentication mode="windows"/>).

Se accendo l'app Web utilizzando il server Web VS, tutto sembra a posto: la pagina mostra il mio dominio Windows, il mio nome utente e tutto il resto. Tuttavia, questo funziona in Opera e Safari e IE e FF, il che mi dice che non sta usando affatto l'autenticazione di Windows (poiché al meglio di la mia conoscenza non funziona in nessun browser tranne IE/FF).

Il prossimo passo è farlo funzionare tramite IIS locale. Creo una voce di file host che punta su www.mysite.mydomain a 127.0.0.1. Quindi in IIS creo un sito Web con un'associazione a www.mysite.mydomain e abilito l'autenticazione di Windows e disabilito l'autenticazione anonima.

Ho impostato IE e FF per abilitare l'autenticazione di Windows come segue:

[~ ~ #] cioè [~ ~ #]

  1. Aggiungi URL al gruppo Intranet
  2. Assicurarsi che l'autenticazione di Windows sia abilitata nelle impostazioni avanzate

[~ ~ #] FF [~ ~ #]

Inserisci "www.mysite.mydomain" nell'impostazione di configurazione network.automatic-ntlm-auth.trusted-uris.

Ma quando compongo www.mysite.mydomain in IE/FF ricevo un prompt di accesso. È interessante notare che, anche quando digito il mio login di Windows qui, continua a fallire e mi mostra il prompt di accesso ancora.

Non abbiamo Active Directory qui, ma la mia comprensione è che dovrebbe funzionare bene con un account locale.

Non riesco a pensare a nient'altro che devo fare. Eventuali suggerimenti?

Modifica: di recente siamo passati all'utilizzo di Active Directory e il problema persiste.

Modifica: quando annullo il prompt di accesso, vengo indirizzato a una pagina "Errore dettagliato IIS 7.5" con le seguenti informazioni:

Errore HTTP 401.2 - Non autorizzato Non sei autorizzato a visualizzare questa pagina a causa di intestazioni di autenticazione non valide. **

64
David

Devi whitelist un dominio specificato nel file hosts per far funzionare l'autenticazione di Windows.

Copiato dal link sopra per un rapido accesso:

  1. Impostare la voce del Registro di sistema DisableStrictNameChecking su 1. Per ulteriori informazioni su come eseguire questa operazione, consultare l'articolo 281308 nella Microsoft Knowledge Base
  2. Fare clic su Start, scegliere Esegui, digitare regedit e quindi fare clic su OK.
  3. Nell'editor del Registro di sistema, individuare e quindi fare clic sulla seguente chiave di registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
  4. Fare clic con il pulsante destro di MSV1_0, scegliere Nuovo, quindi fare clic su Valore multistringa.
  5. Digitare BackConnectionHostNames e quindi premere INVIO.
  6. Fare clic con il pulsante destro di BackConnectionHostNames e quindi scegliere Modifica.
  7. Nella casella dati valore digitare il nome host o i nomi host per i siti che si trovano sul computer locale e quindi fare clic su OK.
  8. Chiudere l'editor del Registro di sistema e quindi riavviare il servizio IISAdmin.
124
Kevin Stricker

Hai provato a mettere il dominio davanti al nome utente?

DOMAIN\username

Se non si dispone di un account di dominio, provare a aggiungere il prefisso al nome utente con il nome del computer:

MYCOMPUTER\myusername
6
James Johnson

Di recente ho trascorso tre giorni cercando di risolvere lo stesso problema e mi ha fatto impazzire. Stava succedendo in una configurazione con bilanciamento del carico in cui uno dei server si stava autenticando correttamente mentre l'altro falliva. Indagando il problema - e alla fine risolvendolo - si è rivelato non correlato all'ambiente con carico bilanciato, potrebbe accadere con qualsiasi server durante l'autenticazione utilizzando l'autenticazione di Windows e il server viene chiamato con un nome diverso da quello riconosciuto da Active Directory

1. Abilitare la registrazione Kerberos

Per diagnosticare correttamente il problema, dovrai abilitare la registrazione Kerberos sul computer che ospita il tuo IIS. A tale scopo, aggiungi la seguente voce di registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

Aggiungi valore registro LogLevel con ValueType REG_DWORD e valore x1.

Una volta attivata la registrazione, quindi si tenta di eseguire l'autenticazione, verranno registrati errori nel registro applicazioni di Windows. Puoi ignorare l'errore KDC_ERR_PREAUTH_REQUIRED (questa è solo una parte dell'handshake) ma se ricevi l'errore KDC_ERR_C_PRINCIPAL_UNKNOWN significa che il tuo controller AD non riconosce il tuo server quindi devi per seguire i passaggi seguenti.

2. KDC_ERR_C_PRINCIPAL_UNKNOWN

se ricevi KDC_ERR_C_PRINCIPAL_UNKNOWN, significa che il nome "mysite.mydomain.com" è diverso da come l'AD riconosce la tua macchina, quindi non è in grado di fornire un biglietto Kerberos valido. In tal caso, è necessario registrare un nome principale di servizio (SPN) per "'www.mysite.mydomain" nell'AD.

Sul controller AD, esegui questo comando: avrai bisogno del privilegio di amministratore di dominio:

Setspn -A HTTP/mysite.mydomain YOUR_MACHINE_HOSTNAME

. Utilizzare un'identità personalizzata per il pool di applicazioni

Infine, fai in modo che il tuo pool di applicazioni utilizzi un account personalizzato che appartiene ad Active Directory anziché utilizzare NetworkService. Questo può essere fatto nelle impostazioni avanzate del pool di applicazioni.

e .. voilà.


Note: Il problema potrebbe (improbabile) essere correlato alla registrazione di più SPN sullo stesso computer, in tal caso sarà necessario eseguire un comando per rimuovere SPN duplicati, ma dubito che sia così. Prova anche ad aggiungere un'associazione diversa al tuo sito (che non usa un nome personalizzato) qualcosa come htttp: // localhost: custom_port_number e vedi se l'autenticazione funziona. Se funziona, questa è un'ulteriore indicazione che stai soffrendo dello stesso problema che ho avuto.

5
kabaros

È necessario verificare se è installata/abilitata l'autenticazione di Windows. Può sembrare strano ma in IIS 7 devi installare e abilitare i vari metodi di autenticazione. Dai un'occhiata http://support.Microsoft.com/kb/942043/ = per ulteriori informazioni, vedere la sezione citata di seguito.

Causa 1
L'applicazione Web è configurata per utilizzare l'autenticazione integrata di Windows. Tuttavia, la funzionalità di autenticazione di Windows non è attivata. In alternativa, la sezione del modulo nativo di autenticazione integrata di Windows del file ApplicationHost.config o del file Web.config non è valida. Per risolvere questo problema, vedere la risoluzione 1.

Originale
Di solito quando provi a visualizzare una pagina web asp.net ospitata su IIS e ricevi un prompt di accesso, ciò non significa che le tue credenziali non sono state ricevute o che non sei " t autenticato. Ciò significa che l'account con cui è in esecuzione il tuo sito Web non dispone delle autorizzazioni giuste per lavorare con i file.

In IIS 6 e 7 è possibile modificare facilmente l'account utente con cui viene eseguito il pool di app. Provare a cambiare l'identità del pool di app in un account con un accesso più specifico per questo. O se si desidera attenersi all'account esistente (IUSR_? Servizio di rete?) è possibile concedere a tale account più autorizzazioni sulla directory in cui è archiviato il sito Web.

Questo articolo è indirizzato specificamente a BizTalk ma non ha quasi riferimenti ad esso e si concentra sulla risoluzione dei problemi relativi alle autorizzazioni con IIS e pool di app: http://msdn.Microsoft.com/en -us/library/aa954062.aspx

4
Peter

Perché IIS locale? Puoi usare local IIS Express?

Se è così, prova questo. Sembra che IIS Express per impostazione predefinita abbia l'autenticazione di Windows impostata su false.

Modificare

<windowsAuthentication enabled="false">

su "true" nel file applicationhost.config (nella cartella 'C:\Users [Profilo]\Documents\IISExpress\config'). Questo funziona per me.

3
Raul Uria

Per garantire che IIS utilizza l'autenticazione di Windows, penso che dovresti provare a disattivare altri metodi di autenticazione. Se l'autenticazione anonima è abilitata, l'autenticazione di Windows non funzionerà. Puoi anche leggere questo Articolo di supporto Microsoft che descrive IE e IIS requisiti nei dettagli.

2
Espen Burud

Dopo aver letto la risposta di Espen Burud, ho risolto il mio problema cambiando nel web.config del root:

<allow users="*" />

a

<deny users="?" />

La pagina che richiede l'autenticazione di Windows non è nella directory principale, ma in una sottodirectory con il proprio web.config con deny users ? ma ciò non ha fatto funzionare l'autenticazione di Windows. Apparentemente, devi negare agli utenti il ​​root perché funzioni.

La configurazione IIS ha l'autenticazione anonima abilitata; non importa. Dopo la modifica di web.config sopra, l'autenticazione di Windows ha funzionato.

0
Roland

Ho ricevuto questo errore quando ho abilitato l'autenticazione di Windows. Volevo autorizzare l'utente in base al login di Windows e non esiste una pagina di accesso nella mia applicazione.

Ho risolto l'errore aggiungendo quanto segue nel mio Web config file. Sotto il tag system.web, Ho cambiato authentication mode="None" a authentication mode="Forms".

Sotto il tag appSettings, ho aggiunto add key="owin:AutomaticAppStartup" value="false"

0
Rakesh Karthik