la mia risposta è probabilmente dipende dalla risposta a questa domanda: si tratta di un'applicazione enterprise che vive all'interno di una rete con Active Directory?
se la risposta è sì, allora questi sono i passi che avrebbe fornito:
1) Creazione di gruppi globali per la propria applicazione, nel mio caso, ho avuto un gruppo appuser e un gruppo appadmin.
2) È possibile accedere al server SQL in modalità AUTENTICAZIONE MISTA, quindi assegnare i gruppi di APPUSER come LOGIN di SQL SERVER al proprio database con i diritti CRUD appropriati per il/i proprio/i DB, e assicurarsi di accedere a SQL SERVER con Connessione sicura = True nella stringa di connessione.
A questo punto, il tuo negozio AD sarà responsabile dell'autenticazione. Dal momento che stai accedendo all'applicazione tramite una CONNESSIONE ATTENDIBILE, passerà l'identità di qualsiasi account esegua l'applicazione su SQL Server.
Ora, per l'AUTORIZZAZIONE (ovvero comunicare all'applicazione ciò che l'utente connesso è autorizzato a fare) è sufficiente interrogare AD per un elenco di gruppi di cui l'utente connesso è membro. Quindi controlla i nomi dei gruppi appropriati e crea l'interfaccia utente in base all'appartenenza in questo modo.
Il modo mie domande di lavoro sono quindi:
- Avvio dell'applicazione, le credenziali si basano sul utente connesso, questo è l'aspetto primario di autenticazione (cioè possono accedere perciò esistono)
- I Get tutti i gruppi per la Windows Identity in questione
- verifico per il gruppo standard uTENTE - se questo gruppo non esiste per il Windows Identity in questione, allora questo è l'autenticazione FAIL
- verifico per utente admin Gruppo - Con questo ex isting in gruppi dell'utente, modifico l'interfaccia utente per consentire l'accesso ai componenti di amministrazione
- Mostra l'interfaccia utente
poi ho sia un oggetto PRINCIPIO con i diritti stabiliti/etc su di esso, o utilizzare le variabili globali Posso accedere per determinare l'interfaccia utente appropriata mentre costruisco i miei moduli (es se il mio utente non è un membro del gruppo ADMIN, quindi nasconderei tutti i pulsanti DELETE).
Perché suggerisco questo?
È una questione di distribuzione.
È stata la mia esperienza che la maggior parte delle applicazioni aziendali vengono distribuite dagli ingegneri di rete anziché dai programmatori, quindi avere senso dell'autenticazione/autorizzazione è responsabilità di AD, poiché è lì che vanno i membri della rete quando si discute dell'autenticazione /Autorizzazione.
Inoltre, durante la creazione di nuovi utenti per la rete, un ingegnere di rete (o chiunque sia responsabile della creazione di nuovi utenti di rete) è più adatto a ricordare di eseguire i compiti di gruppo mentre sono IN AD rispetto al fatto che hanno entrare in una dozzina di applicazioni per analizzare gli incarichi di autorizzazione.
Fare questo aiuta il labirinto di permessi e diritti che i nuovi assunti devono essere concessi o quelli che lasciano la società devono essere negati e mantiene l'autenticazione e l'autorizzazione nel repository centrale a cui appartiene (cioè in AD @ the Domain Livello del controller).
Vogliono solo assicurarsi di sapere: C# è il linguaggio. Non ha sicurezza. .NET è la piattaforma. È dove è la sicurezza. –
Thnx John - Capisco la differenza. –
O è possibile estendere l'appartenenza a Asp.net o è possibile utilizzare framework pronto per la connessione - VisualGuard - http://www.visual-guard.com/EN/-source_soforum.html –