Domanda

Nelle mie precedenti domande mi chiedevo come utilizzare l'autenticazione di Windows nella mia applicazione. Ora funziona, gli utenti possono accedere con un account, ma ho uno scenario di accesso al database sul quale non riesco a trovare nulla.

Fondamentalmente avrò diversi server ed ecco il problema.

Su alcuni server disporranno di account di autenticazione di Windows per il server di database di SQL Server, pertanto è consigliabile utilizzare le loro credenziali utilizzando la rappresentazione. Ma noto che è un'impostazione globale nel web.config (non per connessione) e in un caso voglio usare l'account di autenticazione Windows delle applicazioni (IIS o ASP) anziché gli utenti. (Accesso al mio database di configurazione)

Come posso raggiungere questo obiettivo?

L'applicazione Web è ASP.NET MVC ospitata su Server 2003/2008 IIS 6/7 / 7.5 con client Windows XP e versioni successive. Utilizzo di SQL Server Express / Standard 2005/2008 misto.

È stato utile?

Soluzione

La rappresentazione è su una base ampia del sito oppure puoi attivarla manualmente. Ciò che non puoi fare è spegnerlo manualmente, temo, né può essere fatto tramite le stringhe di connessione.

Quindi sostanzialmente disattivate la rappresentazione, quindi chiudete le chiamate al database quando è necessaria la rappresentazione in questo modo:

using System.Security.Principal;

WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity;
WindowsImpersonationContext ctx = null;
try
{
    ctx = winId.Impersonate();
    // Do your thing
}
catch
{
}
finally
{
    if (ctx != null)
        ctx.Undo();
}

La P & amp; MSDN P guida alla rappresentazione di asp.net ha di più.

Altri suggerimenti

Dovrai impostare la delega sulla tua rete in modo che i server ASP.NET possano impersonare gli utenti sui computer server SQL. Ciò presuppone che i server siano su una rete controllata da Active Directory (non gruppi di lavoro) e che i server sql si trovino su macchine diverse rispetto ai server Web.

Configurare la delega per quei computer server di database in cui si desidera che gli utenti vengano rappresentati e non configurarli per quei computer server in cui si desidera che l'account del processo di lavoro ASP.NET sia l'account che accede al server.

Se ciò non è possibile, è possibile disattivare Windows / autenticazione mista sulle istanze di SQL Server su cui si desidera impedire la delega, quindi configurare manualmente l'account SQL Server per connettersi nella stringa di connessione all'interno di web.config .

Utilizza controller di dominio, in modo che possa propagare le stesse credenziali per singolo utente nell'intero dominio.

Il secondo trucco per i gruppi di lavoro: creare lo stesso account di rappresentazione (con esattamente lo stesso login e password) su entrambi i server (ASP e SQLServer). Non dimenticare di concedere questa autorizzazione su SQLServer.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top