Ecco quello che ho cercato di farePosso impersonare un client autenticato con l'autenticazione di moduli e stabilire una connessione affidabile a SQL Server?
creare un'applicazione ASP.NET MVC 3 con autenticazione basata su form e l'appartenenza di Active Directory. Il server web e il database sono server fisici diversi, quindi un doppio salto.
Pensavo che la risposta fosse questo vecchio articolo su constrained delegation and protocol transition? Finora, non sono stato in grado di far funzionare la tecnica.
Lo sto testando dal mio computer DEV (Windows 7, IIS7) per il server Web prima della distribuzione in Windows 2008 (IIS7) nell'impostazione di produzione. Windows 2008 farebbe la differenza?
Cosa funziona e cosa fallisce
sono in grado di effettuare il login con le forme auth e l'appartenenza AD. Questo sembra funzionare bene. Quando provo a fare una chiamata di database utilizzando questo codice:
public void AsUser(Action action)
{
using (var id = new WindowsIdentity(User.Identity.Name + @"@example.com"))
{
WindowsImpersonationContext context = null;
try
{
context = id.Impersonate();
action.Invoke();
}
catch (Exception ex)
{
// ex.Message is The type initializer for System.Data.SqlClient.SqlConnection threw an exception
// buried inner exeption is Requested registry access is not allowed
}
finally
{
if (context != null)
{
context.Undo();
}
}
}
}
Non riesce con un'eccezione mi porta a credere che ho problemi di installazione sul mio server DEV locale. L'eccezione interna è Requested registry access is not allowed
.
Se ho impostato un punto di interruzione e ispezionare la WindowsIdentity
dopo la chiamata Impersonate()
vedo che il ImpersonationLevel
è impostato su Identification
. Sembra un indizio che non sia configurato correttamente. Qualcuno può confermare?
Sono sulla buona strada ed è possibile anche impostarlo? Qualsiasi suggerimento sarebbe apprezzato.
Grazie per tutte le informazioni. Molte cose erano nuove per me. Non ho ancora avuto il tempo di resettare tutto e iniziare con questa nuova conoscenza, ma sono più fiducioso di poterlo far funzionare ora. –
Questo tipo fa schifo ... con 13 minuti fino a quando la taglia è scaduta, ho scelto la tua come risposta, non rendendomi conto che è diverso da "assegnare" la taglia. Hai metà di quello che dovresti avere. Mi dispiace di non aver capito il sistema o forse ho perso gli indizi nell'interfaccia utente - in entrambi i casi il mio male. –
@Aaron Nessuna preoccupazione. Grazie per aver accettato la mia risposta. Dopo aver ottenuto il funzionamento del protocollo transistor, ci sono in realtà alcuni problemi di kerberos più generali che potresti incontrare. Per esempio. se ci sono SPN duplicati nella stessa foresta AD, l'autenticazione Kerberos smetterà di funzionare in silenzio. È molto difficile scrivere una risposta completa a questo tipo di domande. Se possibile, MSDN non avrà bisogno di avere più articoli e KB per problemi simili. Se ti imbatti in altri problemi di AD, tagga una domanda con 'active-directory'. Potresti ricevere suggerimenti più utili –