11 messaggi dal 08 giugno 2010
Ciao a tutti,
è il mio primo post in questo forum, anche se per me siete sempre una fonte importante per il mio lavoro.
Premetto che la mia domanda può risultare banale, ma spero di ricevere comunque una vostra risposta.
Sto sviluppando un'applicazione asp.net c# per una intranet in cui si dovranno usare dei dati su un database sql server 2008. Fin qui nulla di strano se non fosse che tutti gli user sono registrati in Active Directory e quindi in base alla login devono essere visualizzati i loro dati.
Vorrei sapere se devo fare una query ldap per popolare una tabella UTENTI e poi da lì fare tutte le stored procedure del caso o se c'è un altro modo per fare il match tra lo user di AD e i suoi dati su database. Considerate che l'azienda è grande e gli utenti sono tanti.
Spero di essere stata chiara, grazie mille a chiunque mi voglia dare una mano!
1.024 messaggi dal 19 dicembre 2003
Contributi | Blog
Gli utenti per accedere a SQL Server devono, ovviamente, essere autorizzati a farlo. Puoi semplificare la gestione dei permessi definendo preventivamente in AD dei gruppi (uno o più a seconda delle differenti tipologie di utenti che andrai a censire) e dando l'accesso ai gruppi e non ai singoli utenti.
Anche la gestione dei permessi sugli oggetti di database seguirà quindi la mappatura gruppo -> oggetto.
Per discriminare per ciascun utente "i suoi dati" dipende da quello che intendi. Se ciascun utente o gruppo di utenti accede a diversi oggetti non devi far altro che assegnare i permessi sugli oggetti di competenza di ciascun gruppo. Se invece nell'ambito della stessa tabella (ad esempio) ci sono dati di tizio e dati di caio che solo i legittimi proprietari devono poter visualizzare allora la cosa si complica ed hai bisogno di implementare una sorta di "row level security". Uno dei modi per farlo è quello di avere un campo della tabella che discrimina l'owner. Creando una vista definita come

CREATE VIEW dbo.MyView
AS

SELECT campi
FROM dbo.MyTable
WHERE RecordOf = SYSTEM_USER

In questo modo chiunque accede alla vista vedrà solo ed esclusivamente i record di cui è l'owner.

Bye
11 messaggi dal 08 giugno 2010
Ciao,
grazie mille per avermi risposto.
Il punto è proprio questo: io ho gli utenti su AD e poi ho la tabella dove vengono salvati tutti i dati relativi alle ore lavorate su ogni attività.Quindi sulla stessa tabella ho record per tutti gli utenti.
Inizialmente ho previsto una colonna ID_UTENTE per discriminare con un Guid l'accesso alle informazioni...ma da dove lo prendo questo GUID(uniqueidentifier in SQL) se non ho una tabella UTENTI ma solo AD?
Proverò a creare un "row level security" come mi hai suggerito.
Grazie mille!
1.024 messaggi dal 19 dicembre 2003
Contributi | Blog
Se valorizzi quella colonna con un GUID ti serve comunque un metodo per mappare quel valore con l'utente. Fai prima a memorizzare l'utente con la funzione che ti ho citato (o altra similare).

Bye
11 messaggi dal 08 giugno 2010
Non so come ringraziarti, ho fatto un test e funziona alla perfezione  !!!
Grazie mille!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.