2010-11-01 19 views
7

Abbiamo recentemente rilasciato l'ultima versione della nostra applicazione intranet, che ora utilizza l'autenticazione Windows come standard e deve essere in grado di connettersi a un server SQL configurato con le credenziali del dominio dell'utente finale.Come configurare IIS in modo che le credenziali del dominio dell'utente vengano utilizzate durante la connessione al server SQL?

Ultimamente abbiamo rilevato che in un paio di distribuzioni di clienti, sebbene IIS possa vedere le credenziali del dominio dell'utente, non le passerà al server SQL. Invece, sembra usare l'account anonimo. Questo nonostante l'esecuzione di tutti i passaggi corretti (modifica della sicurezza della directory su Win Auth, aggiornamento di Web.Config per utilizzare Win Auth e negazione degli utenti anonimi).

Ho fatto molte letture che suggeriscono che dobbiamo accertarci che Kerberos sia a posto, ma non sono sicuro (a) di quanto sia valido (cioè è davvero un requisito?) O (b) come procedere per indagare se è impostato o come procedere per configurarlo.

Siamo in una situazione in cui dobbiamo essere in grado di configurare IIS o l'applicazione affinché funzioni per il cliente o di spiegare esattamente al cliente cosa devono fare per farlo funzionare.

Siamo riusciti a riprodurre questo nella nostra rete interna con un server SQL di test e una scatola IIS dello sviluppatore, quindi avremo intenzione di gironzolare con questa configurazione e vedere se possiamo trovare una soluzione, ma se qualcuno ha idee brillanti, sarei molto felice di sentirli!

Mi piacerebbe soprattutto ascoltare i pensieri o i consigli delle persone in termini di Kerberos. È un requisito, e se lo è, come faccio a delineare ai clienti come dovrebbe essere configurato?

Oh, e ho anche visto un paio di persone menzionare la "regola del one-hop classico" per i domini e il passaggio delle credenziali di Windows, ma non so quanto peso ci sia in realtà?

Grazie!

Matt

risposta

4

Questo è chiamato il Double-Hop Problem e vieta l'invio di credenziali dell'utente a terze parti. Ciò si verifica quando navigano da una macchina, contro un sito su un altro (primo hop) e inoltrando le credenziali a una terza macchina (secondo hop).

Il problema non viene visualizzato se si ospitano IIS e SQL Server sullo stesso computer.

Ci sono molti altri dettagli tecnici pubblicati su questo numero allo How to use the System.DirectoryServices namespace in ASP.NET, che spiega il problema del doppio salto e i token primari e secondari.

+0

Grazie per il collegamento. Sembra una buona lettura! Lo attraverserà domani. –

+0

Ottimi articoli .. grazie! Sembra che ci troviamo di fronte a tre possibili soluzioni: dire al cliente di implementare Kerberos, eseguire l'app Web utilizzando un account di dominio fisso per connettersi a SQL Server o ospitare l'applicazione Web con SQL Server. –

+0

Per chiunque fosse interessato, era il problema del "doppio salto" e la nostra soluzione finale era nello snap-in MMC Utenti e computer di Active Directory. Abbiamo esaminato le proprietà dell'account computer (per il server IIS) e nella scheda "Delega" è stata consentita la delega a servizi specifici. Abbiamo aggiunto il server SQL che ospita i database dell'applicazione all'elenco delle macchine che accettano la delega e ha specificato Servizio MSSQLSvc. Ciò garantisce che il server IIS sia considerato affidabile solo per il trasferimento delle credenziali per SQL Server e non per altri servizi. –

1

Per eseguire l'applicazione in Active Directory o di Windows le credenziali dell'utente, assicurarsi che gli stessi:

  • l'applicazione di IIS è impostato per non consentire l'accesso anonimo
  • l'applicazione IIS utilizza integrata di Windows autenticazione
  • la stringa di connessione deve avere Integrated Security=SSPI per garantire che le credenziali Windows/AD dell'utente vengano passate a SQL Server.

    cioè Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

+0

Il secondo e il terzo punto ho già. Ho anche provato a disabilitare l'accesso anonimo oggi e questo non ha aiutato. È interessante notare che abbiamo funzionato bene in ambienti di clienti simili in cui abbiamo abilitato l'accesso anonimo (così come l'autenticazione di vittoria ovviamente). Ma grazie per il feedback però! –

+0

@Code: non funziona? Che sintomi hai allora? –

+0

Si connette al server SQL come Windows NT \ Accesso anonimo –

0

Si dichiara di non essere sicuro "come fare per indagare se è impostato o come procedere per configurarlo".

Per questo consiglio vivamente uno strumento chiamato DelegConfig. È un'app molto utile che puoi dire se Kerberos è configurato correttamente.

Decomprimerlo in una directory, configurare una directory virtuale in IIS per puntare ad essa. Passare alla pagina principale e indicare a quale server di back-end si desidera consentire l'accesso (ad esempio UNC, SQL, HTTP ecc.) E comunicare correttamente o meno l'installazione e spiegare perché.

Essa ha anche l'abilty di recongiure le Kerberos per risolvere il problema se lo desiderano (anche se non ho usato questo - io preferirei reconfiguire io stesso per capire quello che ho fatto in futuro)

Mi rendo conto che questo arriva troppo tardi per il tuo particolare problema, ma ho pensato che valesse la pena condividerlo per gli altri che seguono, specialmente la capacità degli strumenti di spiegare perché la delega è o non funziona. L'ho trovato invalicabile.

+0

È geniale, grazie! In effetti, ora siamo molto più consapevoli del problema e ora abbiamo dei white paper dettagliati su come i clienti devono configurare le loro impostazioni di directory attive. Ma questo potrebbe essere molto utile per i clienti che non sono abbastanza esperti per sapere come è configurata la loro rete! Aiuterà sicuramente nella risoluzione dei problemi, quindi grazie per questo. Vado a giocare! –

Problemi correlati