Ricezione del prompt di accesso tramite l’autenticazione integrata di Windows

Ho un’applicazione .NET 3.5 in esecuzione su IIS 7 su un server Windows 2003 e non riesco a ottenere l’autenticazione integrata di Windows che funzioni correttamente mentre continuo a ricevere un accesso. Ho impostato l’autenticazione di Windows per abilitare in IIS con tutti gli altri tipi di sicurezza disabilitati e l’autenticazione / authorization del file web.config dell’applicazione è configurata come:

       

Con questa configurazione, mi aspetto dietro la verifica della scena dell’utente di Windows per consentire l’accesso e negare agli utenti anonimi. Tuttavia, quello che sto ottenendo è un pop-up di login di Windows quando provo ad accedere al sito.

Ho risolto questo problema per alcuni giorni e non riesco a capire il problema. Sulla base di post con problemi simili, ho confermato che il mio URL non include alcun periodo, ricontrollato che le mie impostazioni di IE sono impostate su Abilita autenticazione integrata di Windows e che ho aggiunto il mio URL ai miei siti intranet, ma continuo a ricevere il pop-up.

Per risolverlo ulteriormente, ho abilitato l’autenticazione anonima in IIS e modificato il mio file web.config al quale mi è stato permesso di entrare, quindi ho aggiunto Response.Write (System.Security.Principal.WindowsIdentifity.getcurrent (). User.name.toString () ) per provare a vedere quale utente viene utilizzato nell’autenticazione. Il risultato che sto ottenendo è IIS APPPOOL \ myapp che è ovviamente il pool di applicazioni IIS per la mia applicazione.

Apprezzo davvero qualsiasi aiuto che chiunque può fornire in modo tale che io stia ancora utilizzando solo l’autenticazione di Windows ma non ottengo il pop-up e l’autenticazione di Windows viene eseguita contro l’effettivo utente di Windows.

Grazie.


Nota aggiuntiva dopo la risoluzione di ulteriori problemi:

Appena notato che quando l’accesso fallisce e il prompt di login di Windows viene visualizzato di nuovo, mostra il nome utente che ha tentato di accedere come “SERVERNAME” \ “USERNAME” che mi ha portato a credere che stia cercando di convalidare l’utente contro il server vs. dominio. Per confermare ciò, ho creato un account utente locale direttamente sul server dell’app con lo stesso nome utente e password dell’utente del dominio di rete e ho tentato di accedere di nuovo. Il risultato è stato che ho ricevuto di nuovo il prompt di accesso, ma quando ho inserito username e password questa volta, sono riuscito ad accedere correttamente. L’utente della rete e il server delle app si trovano sullo stesso dominio, quindi non sono sicuro del motivo per cui l’autenticazione di IIS punta agli account del server delle app locali e non agli account del dominio. Mi rendo conto che questa è una domanda di IIS a questo punto, quindi postando anche su forums.iis.net, ma apprezzo qualsiasi suggerimento che qualcuno possa avere da quando ha risolto il problema per giorni.

Ho un server Windows 2008 su cui sto lavorando, quindi la mia risposta non è completamente uguale a quella che l’OP ha su un server Windows 2003.

Ecco cosa ho fatto (registrando questo qui così posso trovarlo più tardi).

Stavo avendo lo stesso problema:

prompt di accesso

Nel mio file Web.config , ho avuto questa sezione:

        

Sotto IIS, tutti questi sembrano essere risolti sotto l’icona di autenticazione .

  1. Modifica autorizzazioni: assicurarsi che l’account ASP.NET disponga dell’authorization. Il mio non è stato originariamente aggiunto.

Autorizzazione ASP.NET

Ora vai nelle funzionalità di autenticazione :

Funzioni di autenticazione

Abilita autenticazione anonima con IUSR :

Autenticazione anonima

Abilitare l’ autenticazione di Windows , quindi fare clic con il pulsante destro per impostare i provider .

NTLM deve essere PRIMO!

Autenticazione di Windows

Successivamente, controlla che in Impostazioni avanzate … la Protezione estesa sia Accetta e Abilita l’autenticazione in modalità Kernel è CONTROLLATA:

Impostazioni avanzate

Una volta fatto questo, sono tornato alla mia applicazione web, ho fatto clic sul collegamento Sfoglia e ho effettuato l’accesso senza dover fornire nuovamente le credenziali.

Spero che questo si riveli utile a molti di voi, e spero che sia utile anche per me più tardi.

Solo per il beneficio degli altri. Se l’errore è 401.1 Unauthorized e il codice di errore corrisponde a 0xc000006d , significa che si sta effettivamente eseguendo una “funzionalità” di sicurezza che blocca le richieste all’FQDN o intestazioni host personalizzate che non corrispondono al nome del computer locale:

Segui questo articolo di supporto per risolvere il problema:

http://support.microsoft.com/kb/896861

Questo mi ha preso un po ‘perché i commenti di tutti gli altri qui non mi hanno aiutato. Ho trovato questo articolo e lo ha risolto!

Ho avuto un problema simile per cui volevo proteggere solo una certa parte del mio sito web. Tutto ha funzionato bene, tranne in IE. Ho abilitato sia l’autenticazione anonima che quella di Windows. Per Anonimo, l’id quadro è impostata sull’identity framework del pool di applicazioni. Il problema era con l’autenticazione di Windows. Dopo un po ‘di ricerche ho acceso il violinista e ho scoperto che stava usando Kerberos come provider (in realtà è impostato su Negoziare per impostazione predefinita). L’ho cambiato in NTLM e l’ho risolto. HTH

Daudi

Aggiungi l’authorization [Domain Users] alla tua sicurezza web.

  • Fai clic destro sul tuo sito in IIS nella cartella Siti
  • Fai clic su Modifica autorizzazioni …
  • Seleziona la scheda Sicurezza
  • Nella sezione Gruppo o nomi utente fare clic sul pulsante Modifica …
  • Nel pop-up Autorizzazioni, sotto il nome di gruppo o utente fai clic su Aggiungi …
  • Immettere [Domain Users] nei nomi degli oggetti per selezionare l’area di testo e fare clic su OK per applicare la modifica
  • Fare clic su OK per chiudere il pop-up Autorizzazioni
  • Fare clic su OK per chiudere il popup Proprietà e applicare le nuove impostazioni

Non creare errori sul tuo server cambiando tutto. Se hai richiesto di accedere a Windows quando usi Windows Authentication su 2008 R2, vai su Providers e sposta su NTLM per ciascuna applicazione. Quando Negotiate è il primo nell’elenco, l’autenticazione di Windows può interrompere la proprietà di lavoro per un’applicazione specifica su R2 2008 e è ansible che venga richiesto di immettere nome utente e password che mai. Succede occasionalmente quando hai fatto un aggiornamento della tua applicazione. Assicurati che NTLM sia il primo della lista e non vedrai mai più questo problema.

Questo l’ha risolto per me.

Il mio server e il mio PC client sono Windows 7 e appartengono allo stesso dominio

  1. in iis7.5-abilita l’autenticazione di Windows per la tua Intranet (disabilita tutte le altre autenticazioni .. anche Non c’è bisogno di menzionare l’autenticazione di Windows nel file web.config

  2. quindi vai al PC client. IE8 o 9- Strumenti-Opzioni Internet-Sicurezza-Intranet locale-Siti-avanzati-Aggiungi il tuo sito (togli il tag “richiedi server verfi …”.

  3. IE8 o 9- Strumenti-Opzioni Internet-Sicurezza-Intranet locale-Livello personalizzato-userauthentication-logon-select accesso automatico con nome utente e password correnti

  4. salva questa impostazione … hai finito … Non dovrai più chiedere username e password.

  5. Assicurati che, dal momento che il tuo pc client fa parte del dominio, devi avere un object Criteri di gruppo per queste impostazioni, … oppure questa impostazione verrà ripristinata quando l’utente accederà a Windows la prossima volta

Può essere collegato al browser. Se si utilizza IE, è ansible accedere a Impostazioni avanzate e verificare che la casella di controllo “Abilita autenticazione integrata di Windows” sia selezionata.

Se il tuo URL ha punti nel nome del dominio, IE lo tratterà come se fosse un indirizzo internet e non locale. Hai almeno due opzioni:

  1. Ottieni un alias da utilizzare nell’URL per sostituire server.dominio. Ad esempio, myapp.
  2. Segui i passaggi seguenti sul tuo computer.

Vai al sito e cancella la finestra di accesso. Lascia che questo accada:

inserisci la descrizione dell'immagine qui

Nelle impostazioni di IE:

inserisci la descrizione dell'immagine qui

inserisci la descrizione dell'immagine qui

inserisci la descrizione dell'immagine qui

WindowsIdentity.GetCurrent è corretto: è necessario ottenere l’utente APPPOOL. Questo perché il processo ASP.NET, che sta eseguendo il codice, è l’id quadro corrente. Se desideri che l’utente colpisca l’id quadro del sito, dovrai aggiungere la seguente riga nel tuo web.config:

  

Ciò fa sì che il processo assuma l’identity framework dell’utente che richiede la pagina. Tutte le azioni saranno eseguite per loro conto, quindi qualsiasi tentativo di leggere le cartelle sulla rete o accedere alle risorse del database e simili significherà che l’utente corrente avrà bisogno di permessi per quelle cose. Puoi leggere di più sulla rappresentazione qui . Si noti che a seconda di come viene impostata la topologia del server Web / del database, è ansible che si verifichino problemi di delega con la rappresentazione triggersta.

Ma il tuo problema originale è che sembra che l’id quadro non possa essere determinata e tu stia ricevendo un popup di accesso. Noterò che non hai bisogno del blocco se hai disabilitato l’autenticazione anonima in IIS. Non lo includiamo mai (tranne che in speciali blocks e simili) quindi direi che potresti provare a rimuoverlo e riprovare. Tutto il resto sembra giusto, però.

Non hai specificato quale utente sta eseguendo il pool di applicazioni in IIS. È un account personalizzato o è quello predefinito? Se è personalizzato, si tratta di un account di dominio o di un account locale sul server web? A volte gli account personalizzati richiedono qualche passo in più, come la registrazione di un SPN. Inoltre, potrebbe essere un problema con l’account personalizzato che non dispone dell’authorization in AD per la risoluzione dell’account dell’utente in entrata.

È anche ansible controllare i registri IIS per vedere quale risposta viene restituita. Molto probabilmente sarà un 401, ma dovrebbe avere un numero sub dopo come 401.2 o qualcosa del genere. Questo sottotitolo può a volte aiutare a determinare il problema di root. Questo articolo della Knowledge Base ne elenca cinque.

Nel mio caso le impostazioni di authorization non sono state configurate correttamente.

Dovevo

  1. aprire le regole di authorization .NET in IIS Manager

    aprire le regole di autorizzazione .NET in IIS Manager

  2. e rimuovere la regola Nega

    rimuovere la regola Nega

Nella nostra Intranet il problema è stato risolto dal lato client modificando le impostazioni di sicurezza come mostrato qui. Una delle caselle di controllo a destra ha funzionato per noi.

Opzioni Internet IE

Ho appena risolto un problema simile con un’applicazione ASP.Net.

Sintomi: potevo accedere alla mia app utilizzando un utente locale, ma non un utente del dominio, anche se la macchina era correttamente collegata al dominio (come dici nella tua nota aggiuntiva). Nel Visualizzatore eventi di sicurezza, c’era un evento con ID = 4625 “Dominio incoerente”.

Soluzione: ho trovato la soluzione qui . Il problema era che le mie macchine di prova su macchine virtuali clonate (Windows Server 2008 R2, un controller di dominio e un server web). Entrambi avevano lo stesso SID della macchina, che apparentemente causava problemi. Ecco cosa ho fatto:

  1. Rimuovi il server web dal dominio.
  2. Esegui c: \ Windows \ System32 \ Sysprep \ Sysprep.exe nella VM.
  3. Riavvia la VM.
  4. Unisciti al server web per il dominio.

Si perdono alcune impostazioni nel processo (preferenze utente, IP statico, ricrea il certificato autofirmato), ma ora che le ho ricreate, tutto funziona correttamente.

Ho anche avuto lo stesso problema. Ho provato la maggior parte delle cose trovate su questo e altri forum.

Finalmente ha avuto successo dopo aver fatto un piccolo RnD.

Sono entrato in Impostazioni IIS e poi nel mio sito web le opzioni di authorization hanno aggiunto il mio gruppo utenti dominio delle organizzazioni.

Ora, dato che a tutti gli utenti del mio dominio è stato concesso l’accesso a quel sito Web, non ho riscontrato tale problema.

Spero che questo ti aiuti

Hai provato ad accedere con il tuo prefisso di dominio, ad esempio DOMINIO \ Nome utente? Per impostazione predefinita, IIS 6 utilizza il computer host come dominio predefinito, in modo che la specifica del dominio all’accesso possa risolvere il problema.

Ho provato i suddetti accorgimenti di configurazione di IIS e la modifica del registro di loopback, e ho rivisto e ricreato le autorizzazioni del pool di app e una dozzina di altre cose e ancora non ero in grado di sbarazzarmi del ciclo di autenticazione in esecuzione sulla mia workstation di sviluppo con IIS Express o IIS 7.5, da una sessione di navigazione locale o remota. Ho ricevuto quattro risposte di stato 401.2 e una pagina vuota. Lo stesso identico sito distribuito sul mio server di staging IIS 8.5 funziona perfettamente.

Infine ho notato markup nel corpo di risposta che è stato reso vuoto dal browser conteneva la pagina predefinita per un accesso riuscito. Ho determinato che la gestione degli errori personalizzati per ASP.NET e HTTP per l’errore 401 impediva / interferiva con l’autenticazione di Windows mia workstation ma non il server di staging. Ho passato diverse ore a giocherellare con questo, ma non appena ho rimosso la gestione personalizzata solo per l’errore 401, la workstation è tornata alla normalità. Presento questo ancora un altro modo per sparare il tuo piede.

L’autenticazione di Windows in IIS7.0 o IIS7.5 non funziona con kerberos (provider = Negotiate) quando l’id quadro del pool di applicazioni è ApplicationPoolIdentity È necessario utilizzare il servizio di rete o un altro account build-in. Un’altra possibilità è usare NTLM per far funzionare Windows Authenticatio (in Autenticazione di Windows, Provider, inserire NTLM in alto o rimuovere negoziare)

chris van de vijver

Ho avuto lo stesso problema perché l’utente (Identity) che ho usato nel pool di applicazioni non stava sottolineando al gruppo IIS_IUSRS. Aggiunto l’utente al gruppo e tutto funziona

Nel mio caso la soluzione era (oltre alle modifiche suggerite sopra) per riavviare il computer di sviluppo / IIS (server di hosting) del mio / utenti. Il mio utente è appena stato aggiunto al gruppo di sicurezza AD creato di recente e la politica non è stata applicata all’account utente AD finché non ho disconnesso / riavviato il mio computer.

Spero che questo aiuti qualcuno.

Ho riscontrato lo stesso problema di prompt delle credenziali e ho fatto una rapida ricerca e nulla su Internet l’avrebbe risolto. Ci è voluto del tempo per trovare il problema, uno sciocco.

In IIS -> Impostazioni avanzate -> Credenziale percorso fisico (è vuota)

Non appena ho aggiunto un ID macchina (dominio / utente) che ha accesso alla VM / server, il prompt della password si fermerebbe.

Spero che questo ti aiuti

Stavo avendo questo problema su .net core 2 e dopo aver esaminato la maggior parte dei suggerimenti da qui sembra che abbiamo perso un’impostazione su web.config

  

L’impostazione corretta era forwardWindowsAuthToken = “true” che sembra ovvio ora ma quando ci sono così tante situazioni per lo stesso problema è più difficile da individuare

Modifica: ho trovato utile anche il seguente articolo di Msdn che risolve il problema.

Ho ricevuto lo stesso problema ed è stato risolto modificando l’id quadro del pool di applicazioni del pool di applicazioni in cui è in esecuzione l’applicazione Web su NetworkService inserisci la descrizione dell'immagine qui