5

Sono interessato a quali strategie possono essere utilizzate per gestire l'autenticazione utente e l'autorizzazione in un sistema distribuito multipiattaforma. Vorrei poter contrassegnare le azioni nel sistema come appartenenti a un determinato utente e anche solo consentire a determinati utenti di eseguire determinate azioni.Strategie per la gestione dell'autenticazione e dell'autorizzazione utente multipiattaforma

Priorità: Il sistema è attualmente utilizzato solo sotto Windows, in cui le azioni avviate da un utente è al momento contrassegnati solo come provenienti dalla particolare macchina dell'utente. Un'azione consiste essenzialmente nell'usare la cpu per fare alcuni calcoli e restituire il risultato.

Attualmente non esiste alcuna autorizzazione in corso e nessuna autenticazione degli utenti (o tra computer). Il sistema funziona come un servizio con privilegi bassi (usando l'account SERVIZIO DI RETE). I dati non sono sensibili e tutti gli utenti della rete locale possono utilizzare il sistema nei loro contenuti di cuori.

Il sistema può essere implementato sia in configurazioni di dominio Windows omogenee sia in gruppi di lavoro senza un controller di dominio o con un mix di un dominio insieme a un gruppo di computer di lavoro che non appartengono al dominio.

Problema

Al fine di aggiungere funzionalità al sistema, diciamo per esempio la raccolta di statistiche di utilizzo per utente o la visualizzazione che sta facendo uso di un computer, è necessario tenere traccia dei singoli utenti. Oltre a questo, se alcune azioni dovrebbero essere consentite solo da determinati utenti (ad esempio cambiando alcune impostazioni per il sistema), è necessaria anche una qualche forma di autorizzazione.

Ho una buona conoscenza del modo in cui Windows fa questo e l'aggiunta di questo tipo di funzionalità in un'installazione di dominio Windows omogenea sarebbe semplice utilizzando la funzionalità di autenticazione e autorizzazione integrata in Windows. Ciò elimina anche la necessità di assegnare account speciali validi per questo particolare sistema al sistema - una volta che l'utente ha effettuato il login normalmente tutte le autenticazioni e le autorizzazioni possono essere eseguite senza richiedere alcuna interazione utente aggiuntiva.

E se il sistema dovesse funzionare su Mac OSX? O Linux? Cosa fare se si suppone che venga eseguito in un ambiente misto con alcuni utenti in un dominio Windows, altri su OSX e alcune macchine worker che eseguono Linux? (Il sistema attuale può essere portato su tutti questi sistemi e gestisce la comunicazione multipiattaforma e così via). Ho una conoscenza limitata del modo in cui l'autenticazione e l'autorizzazione sono gestite su queste piattaforme e nessuna conoscenza di come ciò possa essere ottenuto durante l'interazione tra piattaforme.

Esistono buone strategie da utilizzare per l'autenticazione e l'autorizzazione di utenti multipiattaforma in un sistema distribuito come questo? Nota il duplice uso di "cross-platform" qui - sia come in grado di compilare il programma per piattaforme diverse sia come essere in grado di interagire tra piattaforme.

Ho taggato la domanda come C++, poiché questa è la lingua in cui è scritto il sistema, ma sono disposto ad accettare qualsiasi cosa possa essere interagita con l'uso di C++. Qualsiasi idea (incluse modifiche architettoniche selvagge) sono benvenute!

Aggiornamento:

Un esempio di quello che sarebbe stato interessante per essere in grado di raggiungere:

utente A è connesso a macchina 1, che è una macchina Windows.

L'utente A apre l'interfaccia amministrativa per il sistema, seleziona la macchina 2 (un sistema Linux) e regola un'impostazione. Il sistema verifica che l'utente A abbia effettivamente privilegi sufficienti per poterlo fare.

Poiché A ha già verificato la sua identità quando ha effettuato l'accesso, sarebbe opportuno consentire a lui/lei di modificare questa impostazione senza dover fornire ulteriori credenziali.

+0

C'è già una banca dati centrale degli utenti che dovrebbero essere riutilizzato? –

+0

@free_easy: No, il sistema non ha alcuna gestione dell'utente al momento. Mi piacerebbe utilizzare gli account utente esistenti, se possibile, vale a dire il single sign-on. – villintehaspam

+0

Dove sono memorizzati gli account utente esistenti? (Active Directory, LDAP, Database) –

risposta

3

È possibile utilizzare l'autenticazione basata sulle attestazioni con token SAML, che funzionano su più piattaforme.

Sul lato Windows c'è una libreria per questo: Windows Identity Foundation.

Vedi: http://msdn.microsoft.com/en-us/security/aa570351

+0

Questo sembra essere praticamente quello che stavo cercando, grazie! – villintehaspam

Problemi correlati