Metodologie per la gestione degli utenti e dell'accesso?

6

Questo è qualcosa che sto facendo fatica a farmi girare la testa. Penso che potrei renderlo più complicato di quello che è.

Quello che sto cercando di fare è sviluppare un metodo per memorizzare gli utenti in un database con diversi livelli di accesso, attraverso diverse applicazioni. So che questo è stato fatto prima, ma non so dove trovare come hanno fatto.

Ecco un esempio di ciò che devo realizzare:

UserA - Access to App1, App3, App4 & can add new users to App3, but not 4 or 1. 
UserB - Access to App2 only with ReadOnly access.
UserC - Access to App1 & App4 and is able to access Admin settings of both apps. 

In passato ho appena usato i gruppi di utenti. Tuttavia, sto raggiungendo una fase in cui ho bisogno di un po 'più di controllo sull'accesso di ciascun utente a determinate parti delle diverse applicazioni. Spero che questo sia stato tagliato e asciutto come se fosse in grado di dare un ruolo a un utente e lasciare che ogni ruolo ereditasse dall'ultimo.

Ora, questo è ciò che devo realizzare. Ma non conosco alcun metodo per farlo. Potrei facilmente progettare qualcosa che funzioni, ma so che è stato fatto e so che questo è stato studiato e so che questo problema è stato risolto da menti molto migliori delle mie.

Questo è per un'applicazione web e utilizza SQL Server 2008. Non ho bisogno di memorizzare le password (LDAP) e le informazioni che ho bisogno di memorizzare sono in realtà molto limitate. In pratica solo nome utente e accesso.

    
posta developer1234 27.08.2012 - 19:59
fonte

1 risposta

6

Questa è la configurazione nell'applicazione che mantengo:

  • la directory attiva ha gruppi che possono accedere all'applicazione con gli utenti di ciascun gruppo
  • le autorizzazioni a grana fine sono conservate nelle tabelle collegate ai gruppi, quindi tutto ciò che l'IT deve fare è aggiungere un utente a un gruppo di directory attivo
  • un servizio bacato che sincronizza gli utenti di Active Directory con una tabella di utenti dell'applicazione

hai bisogno di

  • Tabella utenti: con nome, userId (numerico), abilitato (numerico) e qualsiasi utente acceda con. (Di solito una stringa di testo come le tue iniziali)
  • Tabella dei ruoli: gruppi di Active Directory con ID numerico e identificatore di testo
  • Tabella di azioni: raggruppa le tue autorizzazioni per tipo: accesso a Applicazioni, accesso a Amministrativo, può concedere autorizzazioni. creare una tabella per ognuno con identificatore numerico e stringa descrittiva. Nell'applicazione mantengo le autorizzazioni di livello superiore che includono ACCESS l'applicazione principale, autorizzazioni GRANT, READ, UPDATE, ACCESS a un'applicazione secondaria collegata
  • quindi una query per vedere quali gruppi hanno le autorizzazioni di primo livello assomiglia a questo

    SELECT cr.NAME "AD_Group",             CR.ID GROUP_ROLE_ID,             DECODE (a.NOME,                     'APPROVA', 'Approva le organizzazioni',                     "CONTATTI", "Informazioni di contatto",                     'GRANT', 'Permesso di concessione',                     un nome)                "Stage / permesso",             gp.role_id,             gp.action_id,      Dall'azione a,             general_permission gp,             ruolo cr     DOVE a.ID = gp.action_id             AND gp.role_id = cr.ID

Quando il tuo utente si collega, esegui una query su LDAP per i gruppi di cui sono membri. Quindi interrogare il database per sapere quali autorizzazioni hanno i gruppi. Rendilo semplice con te stesso e aggiungi le autorizzazioni aggiuntive.

    
risposta data 27.08.2012 - 20:17
fonte

Leggi altre domande sui tag