Sono piuttosto nuovo di SOA e quindi di sperimentare.Progettazione servizio SOA/Autenticazione
Attualmente, la parte che crea il problema più grande per me è l'autenticazione, il mio attuale pensiero su di esso prevede:
Il client invia un qualche tipo di messaggio di autenticazione per il servizio di autenticazione/utente, questo servizio interroga il db e se l'utente viene trovato e la password è valida, risponderà con un id di sessione, questo ID verrà utilizzato in tutte le ulteriori richieste di questo client.
Questo mi sembra piuttosto ok ma non so come gestire le richieste ad altri servizi, ho pensato a tre approcci diversi.
Ogni servizio chiede il servizio di autenticazione se la sessione è valida e, in caso affermativo, quali ruoli che l'utente si trova. Il servizio di autenticazione appare nel db e risponde di conseguenza.
Il servizio di autenticazione mantiene tutte le informazioni di sessione in ram e risponde senza il db roundtrip alle richieste.
Il servizio di autenticazione invia un messaggio autorizzato a un esb, l'esb inoltra questo messaggio autorizzato a ogni servizio e questi servizi lo memorizzano nella cache. Non sarebbero necessarie ulteriori richieste al servizio di autenticazione. Se l'utente si disconnette oi suoi ruoli cambiano, un altro messaggio verrebbe inviato e elaborato da tutti i servizi.
Penso che il primo approccio crea troppo stress sul servizio di autenticazione/db ma richiede il minimo sforzo per implementare.
Il secondo è ancora molto facile da implementare ma lo stress sul servizio di autenticazione rimane quasi lo stesso.
Il terzo è un po 'più complicato da implementare, ma avrebbe ridotto il tempo di risposta in quanto non si verifica alcun intervento sul servizio di autenticazione. Però, se ci sono troppe informazioni sulla sessione, questo approccio fallirebbe e la scalabilità non è quasi mai data.
Potresti rispondere http://stackoverflow.com/questions/9553267/soa -disegno-parametro-decisione? – Lijo