Applicazione del protocollo LDAP nell’architettura del S.I.T: una prima soluzione semplice, non generica!
Prima di proporre una soluzione più robusta in termini di sicurezza, vorrei descrivere una soluzione un po’ più semplice di utilizzo del protocollo LDAP. Di seguito il diagramma dei componenti di tale soluzione.
Di seguito la descrizione dell’interazione dei componenti con l’integrazione del protocollo LDAP :
- L’utente accede all’applicazione web fornita come interfaccia con OpenLayer.
- OpenLayer invia una richiesta a GeoServer per ottenere un layer specifico che richiede l’utente.
- GeoServer verifica se la richiesta contiene un cookie di sessione per capire se l’utente è autenticato.
- Se l’utente non è autenticato, Geoserver risponde con un messaggio 401 (non autorizzato).
- OpenLayer vede il messaggio 401 e apre una finestra di autenticazione in cui l’utente dovrà inserire le credenziali LDAP.
- L’utente fornisce le credenziali nel modulo LDAP creato da OpenLayer.
- OpenLayer invia le credenziali a Geoserver per l’autenticazione.
- Geoserver invia le credenziali al server LDAP per la verifica.
- LDAP risponde con successo o fallimento.
- Se l’autenticazione al server LDAP è andata a buon fine, Geoserver invia un cookie di sessione a OpenLayer e fornisce l’accesso al layer richiesto.
- Se l’autenticazione non è valida, Geoserver fornisce a OpenLayer un messaggio di errore.
Ma vediamo in dettaglio la sequenza delle operazioni appena descritte in un linguaggio che può essere copiato e utilizzato nel sito di PLANTUML per la rappresentazione del diagramma UML.
@startuml
participant "Utente" as User
participant "OpenLayers" as OL
participant "GeoServer" as GS
participant "LDAP" as LDAP
participant "PostgreSQL/PostGIS" as PG
User -> OL: Accede all'applicazione
OL -> GS: Richiede layer protetto
GS -> GS: Verifica cookie di sessione
alt Utente non autenticato
GS -> OL: Errore 401 (Non autorizzato)
OL -> User: Richiede credenziali LDAP
User -> OL: Fornisce credenziali
OL -> GS: Invia credenziali per autenticazione
GS -> LDAP: Verifica credenziali
LDAP -> GS: Risposta autenticazione
alt Autenticazione riuscita
GS -> OL: Invia cookie di sessione e layer
else Autenticazione fallita
GS -> OL: Errore autenticazione
OL -> User: Mostra errore
end
else Utente già autenticato
GS -> OL: Fornisce layer
end
group Accesso a PostgreSQL/PostGIS
User -> PG: Richiede accesso ai dati
PG -> LDAP: Verifica credenziali
LDAP -> PG: Risposta autenticazione
alt Autenticazione riuscita
PG -> User: Fornisce dati
else Autenticazione fallita
PG -> User: Negazione accesso
end
end
@enduml
Il codice inserito nel sito PLANTUML da origine al seguente diagramma UML.