Autenticazione Windows IIS Express


245

Sto cercando di utilizzare IIS Express con VS2010 per ospitare un'applicazione Silverlight. Ho modificato il mio file applicationhost.config per consentire la modifica delle impostazioni di configurazione corrette. Ho il seguente nel mio web.config:

<location path="">
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication enabled="false" />
        <windowsAuthentication enabled="true" />
      </authentication>
    </security>
  </system.webServer>
</location>

Non sono stato autenticato e la mia chiamata al servizio di dominio restituisce un record null come utente. Sono stato in grado di farlo funzionare dopo aver installato VS2010 SP1 BETA, ma sto cercando di farlo funzionare solo con IIS Express.

Come abilitare l'autenticazione di Windows per funzionare con IIS Express. C'è un'impostazione di configurazione che mi manca?

Risposte:


276

opzione-1 :

modifica \My Documents\IISExpress\config\applicationhost.configfile e abilita autenticazione windows, ovvero:

<system.webServer>
...
  <security>
...
    <authentication>
      <windowsAuthentication enabled="true" />
    </authentication>
...
  </security>
...
</system.webServer>

opzione-2 :

Sblocca la sezione windowsAuthentication in \ My Documents \ IISExpress \ config \ applicationhost.config come segue

<add name="WindowsAuthenticationModule" lockItem="false" />

Modificare le impostazioni di sostituzione per i tipi di autenticazione richiesti su "Consenti"

<sectionGroup name="security">
    ...
    <sectionGroup name="system.webServer">
        ...
        <sectionGroup name="authentication">
            <section name="anonymousAuthentication" overrideModeDefault="Allow" />
            ...
            <section name="windowsAuthentication" overrideModeDefault="Allow" />
    </sectionGroup>
</sectionGroup>

Aggiungi seguente nel web.config dell'applicazione

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
      <security>
        <authentication>
          <windowsAuthentication enabled="true" />
        </authentication>
      </security>
    </system.webServer>
</configuration>

Il seguente link può aiutare: http://learn.iis.net/page.aspx/376/delegating-configuration-to-webconfig-files/

Dopo l'installazione di VS 2010 SP1 potrebbe essere richiesta l'applicazione 1 + 2 per far funzionare l'autenticazione di Windows. Inoltre, potrebbe essere necessario impostare l'autenticazione anonima su false in IIS Express applicationhost.config:

<authentication>

            <anonymousAuthentication enabled="false" userName="" />

per VS2015, il file di configurazione dell'applicazionehost IIS Express può trovarsi qui:

$(solutionDir)\.vs\config\applicationhost.config

e l' <UseGlobalApplicationHostFile>opzione nel file di progetto seleziona il file di configurazione predefinito o specifico della soluzione.


Grazie. Ma ho provato le opzioni sopra. Ma non riesco ancora a utilizzare l'autenticazione di Windows. Immagino che dovrò solo aspettare VS2010 / SP1 per ottenere questa funzionalità.
Segna il

3
l'opzione due ha funzionato per me. ci è voluto del tempo per trovare questo post!
TodK

Questa domanda non si applica più da quando è uscito VS2010 sp1. Stavo cercando di farlo funzionare senza installare sp1. La mia ipotesi è che sp1 stia facendo qualcosa per configurarlo la prima volta che non sono riuscito a capire. Posso andare avanti e contrassegnare questa risposta corretta, anche se in realtà non lo è poiché sp1 non era il pre-requisito.
Segna il

1
Grazie uomo! NTLM ha funzionato disabilitando l'autenticazione anonima.
Rob Angelier,

4
In VS2015 la configurazione di IIS Express è stata spostata nella struttura della soluzione, in particolare $ (SolutionDir) \. Vs \ config \ applicationhost.config, purtroppo non tiene conto della configurazione esistente in MyDocuments \ IISExpress, quindi sarà necessario ritoccare eventuali personalizzazioni.
Tedford,

401

Visual Studio 2010 SP1 e 2012 hanno aggiunto il supporto per IIS Express eliminando la necessità di modificare le parentesi angolari.

  1. Se non lo hai già fatto, fai clic con il pulsante destro del mouse su un progetto basato sul Web e seleziona "Usa IIS Express ...".
  2. Una volta completato, selezionare il progetto Web e premere F4per focalizzare il pannello Proprietà.
  3. Impostare la proprietà "Autenticazione di Windows" su Abilitato e la proprietà "Autenticazione anonima" su Disabilitato.

inserisci qui la descrizione dell'immagine

Credo che questa soluzione sia superiore alle opzioni di vikomall.

  • L'opzione n. 1 è una modifica globale per tutti i siti IIS Express.
  • L'opzione n. 2 lascia lo sviluppo nel web.config.
    • Inoltre, probabilmente porterà a un errore quando viene distribuito su IIS 7.5 a meno che non segua la procedura di "sblocco" su applicationHost.config del server IIS.

La soluzione basata sull'interfaccia utente precedente utilizza elementi di posizione specifici del sito in applicationHost.config di IIS Express lasciando intatta l'app.

Maggiori informazioni qui: http://msdn.microsoft.com/en-us/magazine/hh288080.aspx


5
Per sottolineare ciò che mi mancava: il menu contestuale e il Alt-Entercollegamento delle proprietà non sostituiscono completamente i dettagli del riquadro delle proprietà che consentono di modificare se l'autenticazione di Windows è abilitata o meno. Utilizzare F4o fare clic sul riquadro delle proprietà per visualizzare effettivamente le proprietà.
Kaleb Pederson,

Ho lottato con questa attività per diversi giorni prima di ricominciare con questo articolo: msdn.microsoft.com/en-us/library/gg703322%28VS.98%29.aspx Fondamentalmente, ignorare tutto nel post originale, ricominciare con un " virgin "applicationhost.config e basta abilitare le impostazioni secondo questa risposta. Finalmente ottengo l'autenticazione di Windows! Grazie!!
DaveN59,

Finisce per cambiare l'impostazione IISExpressWindowsAuthentication da 'enabled' a disabled 'in .csproj. <IISExpressWindowsAuthentication> disabilitato </IISExpressWindowsAuthentication>
Cameron Taggart

7
Queste 2 opzioni sono disattivate e disabilitate per me. Qualche idea sul perché?
pun

1
le 2 opzioni sono disattivate perché questa è presente in IIS Express Config <section name = "anonymousAuthentication" overrideModeDefault = "Allow" /> <section name = "windowsAuthentication" overrideModeDefault = "Allow" /> elimina overrideModeDefault = "Allow "e si disfanno
Micah Armantrout il

9

Sulla base della risposta di booij boy, controlla se hai selezionato la funzione "autenticazione di Windows" nel Pannello di controllo -> Programmi -> Attiva o disattiva le funzionalità di Windows -> Internet Information Services -> World Wide Web Services -> Sicurezza

Inoltre, sembra esserci una grande differenza quando si utilizza Firefox o Internet Explorer. Dopo aver abilitato l '"autenticazione di Windows" funziona per me, ma solo in IE.


2
E farlo funzionare in firefox: markmonica.com/2007/11/20/…
bees73


5

Oltre a queste ottime risposte, nel contesto di un ambiente di sviluppo IISExpress e per contrastare il famigerato errore "system.web/identity@impersonate", puoi semplicemente assicurarti che nel file applicationhost.config sia presente la seguente impostazione .

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
</configuration>

Ciò ti consentirà una maggiore flessibilità durante lo sviluppo e i test, sebbene assicurati di comprendere le implicazioni dell'utilizzo di questa impostazione in un ambiente di produzione prima di farlo.

Messaggi utili:


Atterrato su questo completamente per caso, ma ha funzionato :-)
joshmcode

2

In Gestione IIS fai clic sul tuo sito. Devi essere "in vista funzionalità" (anziché "vista contenuto")

Nella sezione IIS di "visualizzazione funzionalità" scegliere la cosiddetta funzionalità "autenticazione" e fare clic su di essa. Qui è possibile abilitare l'autenticazione di Windows. Questo è anche possibile (credo in uno dei suggerimenti nel thread) da un'impostazione nel web.config (...)

Ma forse hai un web.config con cui non vuoi scrutare troppo. Quindi questa discussione non sarebbe di grande aiuto, motivo per cui ho aggiunto questa risposta.


0

Questa risposta può essere utile se: 1) il tuo sito funzionava con l'autenticazione di Windows prima di eseguire l'aggiornamento a Visual Studio 2015 e 2) e il tuo sito sta tentando di caricare /login.aspx(anche se sul tuo sito non è presente tale file).

Aggiungi le due righe seguenti alla appSettingssezione del tuo sito Web.config.

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>

0

Sulla stessa nota - VS 2015, .vs \ config \ applicationhost.config non visibile o non disponibile.

Per impostazione predefinita, la cartella .vs è nascosta (almeno nel mio caso).

Se non riesci a trovare la cartella .vs, procedi nel seguente modo.

  1. Fare clic con il tasto destro sulla cartella Soluzione
  2. seleziona "Proprietà"
  3. Nella Attributessezione, fai clic sulla Hiddencasella di controllo (impostazione predefinita non selezionata),
  4. quindi fare clic sul pulsante "Applica"
  5. Apparirà la finestra di conferma 'Applica modifiche a questa cartella, sottocartella e file' opzione selezionata, premi 'Ok'.

    Ripeti i passaggi da 1 a 5, tranne acceso step 3, questa volta devi selezionare uncheckl'opzione "Nascosto" che hai controllato in precedenza.

Ora dovrebbe essere in grado di vedere la cartella .vs.


0

Dopo aver fatto tutto nelle risposte sopra, ho capito che non stavo eseguendo Visual Studio come amministratore. Dopo l'esecuzione come amministratore, il problema è stato risolto.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.