Ho un'applicazione ASP.NET 4.0 entro cui ho bisogno per inoltrare l'autenticazione al database. Ai fini di questa richiesta di assistenza, consente di chiamare il server Web "app1" e il server di database "sql1".Kerberos doppio hop in ASP.NET 4.0 e SQL2008R2
Il servizio di database SQL2008R2 è in esecuzione come istanza denominata "SQL2008R2" con un account di dominio personalizzato "SqlServer". Il server esegue Windows Server 2008 R2 Enterprise Edition. Ho creato uno SPN per questo ...
setspn -a MSSQLSvc/sql1.mydomain.local:SQL2008R2 SqlServer
applicazione di ASP.NET è in esecuzione in un pool di applicazioni utilizzando un account di dominio personalizzato "WebApplicationUser", in modalità integrata Pipeline. Attualmente è in esecuzione sul mio portatile con Windows 7 Enterprise, ma alla fine sarà ospitato su Windows Server 2008 R2 Standard Edition. Ho creato 2 SPN di per l'applicazione (sulla macchina Windows 7 che sono attualmente in esecuzione da) ...
setspn -a http/app1 WebApplicationUser
setspn -a http/app1.mydomain.local WebApplicationUser
all'interno di Active Directory utenti e computer, ho selezionato l'account "WebApplicationUser" e ho abilitato la delega vincolata a "MSSQLSvc/sql1.mydomain.local: SQL2008R2" utilizzando qualsiasi protocollo (ho anche provato a utilizzare solo Kerbero).
L'applicazione è installata in IIS 7.5 e l'autenticazione è impostata per disabilitare Anonymouse, Basic, Digest e Forms pur abilitando "Impersonation ASP.NET" e "Windows". L'autenticazione di Windows ha "Protezione estesa" disattivata e "Autenticazione in modalità Kernel" abilitata. I provider sono "Negoziare" e "NTLM" in questo ordine.
L'applicazione ASP.NET utilizza EF, e la stringa di connessione è configurato per utilizzare la protezione integrata ...
<connectionStrings>
<add name="MyContext"
connectionString="metadata=res://*/Data.MyModel.csdl|res://*/Data.MyModel.ssdl|res://*/Data.MyModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=sql1.mydomain.local\sql2008r2;Initial Catalog=MyDatabase;Persist Security Info=false;Integrated Security=True;MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" />
</connectionStrings>
My Web di configurazione specifica sia l'autenticazione di Windows e la rappresentazione, dal momento che una pagine asincrone utilizzando, mi avere la politica inpersonation anche permesso che scorre ...
<runtime>
<alwaysFlowImpersonationPolicy enabled="true" />
</runtime>
<system.web>
<authentication mode="Windows" />
<identity impersonate="true" />
</system.web>
Se ho accesso locale (su "web1") e selezionare l'applicazione (utilizzando IE), funziona tutto questo - ma questo non comporta il doppio hop Sto cercando di risolvere.
Se accedo a un'altra macchina e poi navigo all'applicazione usando IE, o navigo dal computer locale usando FireFox, questo non funziona - nota: FireFox mi richiede i dettagli di accesso. La connessione al database non riesce con "Accesso non riuscito per l'utente" NT AUTHORITY \ ANONYMOUS LOGON ""
A differenza di molti articoli (e qui potrebbe essere parte del problema), non sto utilizzando alcun codice personalizzato per impersonare l'utente. Sono a conoscenza del fatto che la rappresentazione verrà applicata trasversalmente all'applicazione dalle impostazioni web.config di cui sopra. Tutto quello che faccio è aprire la connessione e poi chiuderla di nuovo quando avrò finito.
Ovviamente ho perso un passaggio (o due), ma dopo aver esaminato tutta la documentazione che riesco a trovare (e ce ne sono stati molti), non riesco ancora a trovare che passo sia. Non aiuta il fatto che il 99% della documentazione che riesco a trovare sia effettivamente correlata a IIS6 e Windows 2003, ma i principi dovrebbero rimanere gli stessi.
Qualcuno ha suceeded a ottenere un tale configurazione per funzionare su Windows 7 e/o Windows Server 2008?
Abilita registrazione eventi Kerberos sul server Web e database: http://support.microsoft.com/kb/262177?wa=wsignin1.0 Il visualizzatore eventi è la chiave per trovare e correggere gli errori Kerberos. – brian
L'ho abilitato e ho scaricato anche lo strumento Network Monitor, ma non riesco ancora a vedere abbastanza informazioni per dirmi cosa c'è che non va. Immagino di non aver letto qualcosa correttamente, perché non ho dubbi sulla risposta. –