In che modo le grandi aziende implementano i loro requisiti di sicurezza centralizzati e utilizzati per guidare cose che le persone possono fare (autorizzate a chiamare un determinato servizio web, inviare un ordine, ecc.) e per guidare l'interfaccia utente (disabilitare pulsanti, menu opzioni, singoli campi modulo)?
Sto prendendo in considerazione l'architettura RBAC: Utenti - > Ruoli, ruoli - > Privilegi.
Applicazioni complesse con autorizzazioni basate su molti singoli account-account-user-role-amountThreshhold avrebbe molti, molti "ruoli" e la gestione di questa operazione si complica con il crescere del numero di ruoli.
La gestione di tutte queste opzioni possibili sembra scoraggiante e la mia esperienza precedente è quella di codificare in modo rigido tale logica nell'applicazione.
Es: If (User.Roles("IsAccounting"))
{
btnEditOrder.enabled = false;
}
Ho il compito di progettare / implementare un'architettura / servizio di sicurezza che verrà utilizzato come punto di autenticazione / autorizzazione comune per qualsiasi / tutte le applicazioni (tutte .NET, ma alcune GUI e alcune orientate ai processi).
Questo non è possibile immediatamente a causa dell'organizzazione aziendale in merito agli account dei clienti e ai livelli di autorizzazione in base agli importi finanziari.
Ex: John è un utente e può visualizzare e inviare richieste per account "Microsoft" e "Google". Mike può visualizzare le richieste "Microsoft" e "Google" ma può solo inviare richieste "Google".
Il numero di account / utenti è ampio e variabile.
Se seguo RBAC, ci saranno centinaia di "ruoli" per soddisfare tutti i diritti richiesti (privilegi). Questo non aiuta perché l'obiettivo finale è quello di fornire uno strumento GUI facile da gestire in modo che i manager possano assegnare i loro report diretti ai ruoli appropriati.
Stavo pensando di implementare questo pezzo di sicurezza con la seguente API (bozza di massima nello pseudo-codice):
UserContext securityContext = Security.GetContext(userID, userPwd);
E l'utilizzo in un'applicazione sarebbe come questo:
if (securityContext.RequestManager.CanSubmitRequest("Google")) {...}
In questo modo ci sarebbero migliaia di questi metodi 'Can (params)' per controllare le autorizzazioni che non rendono facile gestire o utilizzare questo modello.
Qualsiasi link / idea / puntatore è apprezzato.
È un negozio .NET, ma nulla di quello che ho visto da .NET (Membership / AzMan) ci darà i requisiti di granularità e di delega richiesti. ActiveDirectory / integrazione Oracle LDAP sarebbe bello, ma non necessario.
Il vecchio sistema (corrente) utilizza LDAP per autenticare gli utenti, ma tutte le autorizzazioni vengono eseguite internamente e archiviate nelle classiche tabelle "Utenti, ruoli, diritti".