Indicizzazione Credenziali Mittente

Il gateway indicizza informazioni sul mittente di ogni richiesta (credenziali di autenticazione, claim del token, indirizzo IP del client, ecc.) nella tabella credenziale_mittente e memorizza i riferimenti nella tabella transazioni. Questo meccanismo consente ricerche efficienti dalla console di monitoraggio (Introduzione) e dalle relative API (API di Configurazione e Monitoraggio).

Abilitazione per tipo di credenziale

È possibile disabilitare l’indicizzazione per uno o più tipi di credenziale, evitando la creazione di entry nella tabella credenziale_mittente e la valorizzazione della colonna corrispondente nella tabella transazioni. Disabilitare i tipi non utilizzati consente di risparmiare risorse database e migliorare le prestazioni.

Nota

Disabilitando l’indicizzazione di un tipo di credenziale, non sarà più possibile effettuare ricerche basate su quel criterio tramite la console di monitoraggio (Introduzione) o tramite le relative API (API di Configurazione e Monitoraggio). Ad esempio, disabilitando il tipo token_clientId, le transazioni non saranno più ricercabili per client id del token.

La configurazione globale avviene nel file “/etc/govway/govway_local.properties”. Di default tutti i tipi sono abilitati.

# Principal (credenziale di autenticazione trasporto)
org.openspcoop2.pdd.transazioni.credenzialiMittente.trasporto.enabled=true

# Token: issuer
org.openspcoop2.pdd.transazioni.credenzialiMittente.token_issuer.enabled=true

# Token: client id
org.openspcoop2.pdd.transazioni.credenzialiMittente.token_clientId.enabled=true

# Token: subject
org.openspcoop2.pdd.transazioni.credenzialiMittente.token_subject.enabled=true

# Token: username
org.openspcoop2.pdd.transazioni.credenzialiMittente.token_username.enabled=true

# Token: e-mail
org.openspcoop2.pdd.transazioni.credenzialiMittente.token_eMail.enabled=true

# Indirizzo IP del client
org.openspcoop2.pdd.transazioni.credenzialiMittente.client_address.enabled=true

# Eventi
org.openspcoop2.pdd.transazioni.credenzialiMittente.eventi.enabled=true

# Tag
org.openspcoop2.pdd.transazioni.credenzialiMittente.gruppi.enabled=true

# API
org.openspcoop2.pdd.transazioni.credenzialiMittente.api.enabled=true

La tabella seguente riassume i tipi di credenziale configurabili e la colonna della tabella transazioni interessata dalla disabilitazione.

Tabella 20 Tipi di credenziale

Tipo

Proprietà

Colonna transazioni

Principal

trasporto

trasporto_mittente

Token: issuer

token_issuer

token_issuer

Token: client id

token_clientId

token_client_id

Token: subject

token_subject

token_subject

Token: username

token_username

token_username

Token: e-mail

token_eMail

token_mail

Indirizzo IP del client

client_address

client_address

Eventi

eventi

eventi_gestione

Tag

gruppi

gruppi

API

api

uri_accordo_servizio

Ridefinizione per singola erogazione o fruizione

La configurazione globale può essere ridefinita sulla singola erogazione o fruizione utilizzando le Proprietà. Il nome della proprietà è composto dal prefisso trace.index. seguito dal nome del tipo di credenziale indicato nella colonna Proprietà della tabella precedente. I valori ammessi sono true o false.

Di seguito l’elenco completo delle proprietà configurabili sulla singola erogazione o fruizione:

trace.index.trasporto=true/false
trace.index.token_issuer=true/false
trace.index.token_clientId=true/false
trace.index.token_subject=true/false
trace.index.token_username=true/false
trace.index.token_eMail=true/false
trace.index.client_address=true/false
trace.index.eventi=true/false
trace.index.gruppi=true/false
trace.index.api=true/false

Se una proprietà non è definita sulla singola erogazione o fruizione, viene utilizzato il valore globale configurato in govway_local.properties.

Indicizzazione credenziali dal token ModI Authorization

Per le API REST con profilo ModI e opzione «Generazione Token: Authorization ModI» (token generato dal fruitore anziché ottenuto dalla PDND), il gateway può indicizzare i claim issuer, subject e client_id estratti dal token JWT presente nell’header Authorization. Le informazioni vengono memorizzate nelle stesse colonne utilizzate per i token gestiti tramite token policy di validazione (token_issuer, token_client_id, token_subject).

La configurazione globale avviene nel file “/etc/govway/govway_local.properties”. Di default l’indicizzazione è abilitata.

# Token ModI Authorization: issuer
org.openspcoop2.pdd.transazioni.credenzialiMittente.modi.token_issuer.enabled=true

# Token ModI Authorization: client id
org.openspcoop2.pdd.transazioni.credenzialiMittente.modi.token_clientId.enabled=true

# Token ModI Authorization: subject
org.openspcoop2.pdd.transazioni.credenzialiMittente.modi.token_subject.enabled=true

La configurazione globale può essere ridefinita sulla singola erogazione o fruizione utilizzando le Proprietà:

trace.index.modi.token_issuer=true/false
trace.index.modi.token_clientId=true/false
trace.index.modi.token_subject=true/false

Aggiornamento temporale delle credenziali

Le credenziali salvate nella tabella credenziale_mittente contengono un timestamp che indica il momento della creazione. Il gateway aggiorna tale data quando accede ad una credenziale la cui data di creazione è più vecchia della soglia configurata. Questo meccanismo consente di individuare le credenziali non più utilizzate.

# Soglia in secondi per l'aggiornamento della data di ultima consultazione.
# Default: 3600 (1 ora)
org.openspcoop2.pdd.transazioni.credenzialiMittente.updateAfterSeconds=3600

Sanitizzazione porta indirizzo IP

L’indirizzo IP del client viene determinato esaminando gli header HTTP della richiesta nel seguente ordine di priorità; viene utilizzato il valore presente nel primo header trovato:

  1. X-Forwarded-For: de facto standard

  2. Forwarded-For: variante senza il prefisso “X-”

  3. X-Forwarded: non standard, utilizzato da alcuni proxy

  4. Forwarded: standard RFC 7239

  5. X-Client-IP: non standard, utilizzato da Amazon EC2, Heroku

  6. Client-IP: non standard, utilizzato da alcuni proxy e load balancer

  7. X-Cluster-Client-IP: non standard, utilizzato da Rackspace LB, Zeus Web Server

  8. Cluster-Client-IP: variante senza il prefisso “X-”

Se nessun header è presente, viene utilizzato l’indirizzo IP della connessione socket.

Alcuni di questi header possono contenere l’indicazione della porta (es. 192.168.1.1:8080 per IPv4, [2001:db8::1]:8080 per IPv6). In particolare l’header Forwarded definito dalla RFC 7239 utilizza il formato for=<indirizzo> (es. for=192.168.1.1:8080, for=»[2001:db8::1]:8080»). La presenza della porta causa la creazione di entry distinte nella tabella credenziale_mittente per lo stesso indirizzo IP, moltiplicando inutilmente i record.

Abilitando la seguente opzione, il gateway rimuove l’informazione sulla porta dall’indirizzo di trasporto prima di salvarlo nella tabella delle credenziali. La sanitizzazione gestisce correttamente tutti i formati: indirizzi IPv4 con porta, indirizzi IPv6 racchiusi tra parentesi quadre con porta e il formato for= dell’header Forwarded (RFC 7239). Nel caso di header contenenti indirizzi multipli separati da virgola, la sanitizzazione viene applicata a ciascun indirizzo.

# Abilita la sanitizzazione della porta dall'indirizzo di trasporto.
# Default: true
org.openspcoop2.pdd.transazioni.tracciamentoDB.transportClientAddress.sanitizePort=true