Token Policy Validazione
Per poter definire politiche di controllo degli accessi basate sui Bearer Token è necessario creare delle Token Policy da riferire nelle configurazioni degli specifici servizi. La gestione delle Token Policy si effettua andando alla sezione Configurazione > Token Policy della govwayConsole. Per creare una nuova policy si utilizza il pulsante Aggiungi. Il form di creazione appare inizialmente come quello illustrato in Fig. 397.
Inizialmente si inseriscono i dati identificativi:
Nome: nome univoco da assegnare alla policy
Tipo: deve essere selezionato il tipo Validazione
Descrizione: testo di descrizione generale della policy
Al passo successivo si inseriscono le Informazioni Generali. Nella sezione Token si specifica il tipo di token accettato e il metodo di passaggio.
Tipo: specifica il tipo di token che il gateway attende di ricevere. I valori possibili sono:
JWS: un JSON Web Token di tipo «Signed».
JWE: un JSON Web Token di tipo «Encrypt».
Opaco: un generico token di tipo non specificato.
Discovery Document URL: consente di abilitare la modalità dinamica OpenID Connect Discovery per recuperare gli endpoint di accesso ai servizi di Introspection, UserInfo e il recupero delle chiavi per una validazione Jwt da una «well-know-url». Se abilitato (Fig. 398) le opzioni configurabili sono le seguenti:
Tipo: indica il formato atteso del payload contenuto nella risposta json:
“OpenID Connect Discovery”: claims definiti in OpenID Connect Discovery ;
“Personalizzato”: consente di definire un mapping puntuale tra il nome di un claim e l’informazione che GovWay cerca di estrarre dalla risposta (Fig. 399);
“Plugin”: consente di indicare il nome di una classe che implementa una logica di parsing personalizzata (deve implementare l’interfaccia «org.openspcoop2.pdd.core.token.parser.IDynamicDiscoveryParser»).
Posizione: indica la modalità di passaggio del token da parte dell’applicativo richiedente. I valori possibili sono:
RFC 6750 - Bearer Token Usage: la modalità di passaggio del token è una qualsiasi delle tre previste dallo standard RFC 6750 (le tre opzioni successive a questa).
RFC 6750 - Bearer Token Usage (Authorization Request Header Field): la modalità di passaggio del token è quella che prevede l’inserimento nell’header «Authorization» del messaggio di richiesta. Ad esempio:
GET /resource HTTP/1.1 Host: server.example.com Authorization: Bearer mF_9.B5f-4.1JqM
RFC 6750 - Bearer Token Usage (Form-Encoded Body Parameter): la modalità di passaggio del token è quella di inserirlo nel body della richiesta, eseguita con una POST, utilizzando il parametro access_token, come ad esempio:
POST /resource HTTP/1.1 Host: server.example.com Content-Type: application/x-www-form-urlencoded access_token=mF_9.B5f-4.1JqM
RFC 6750 - Bearer Token Usage (URI Query Parameter): la modalità di passaggio del token è quella di utilizzare il parametro access_token della Query String, come ad esempio:
GET /resource?access_token=mF_9.B5f-4.1JqM HTTP/1.1 Host: server.example.com
Header HTTP: la modalità di passaggio del token è quella di inserirlo in un header http custom, il cui nome deve essere fornito nel campo Nome Header Http, che appare di seguito.
Parametro URL: la modalità di passaggio del token è quella di inserirlo in un parametro custom della query string. Il nome del parametro deve essere fornito nel campo Nome Parametro URL, che appare di seguito.
Nella sezione Endpoint Token si specificano eventuali opzioni di accesso agli endpoint:
Connection Timeout: Tempo massimo in millisecondi di attesa per stabilire una connessione;
Read Timeout: Tempo massimo in millisecondi di attesa per la ricezione di una risposta dal server;
Https: Parametri di configurazione nel caso in cui il server richieda un accesso Https;
Proxy: Parametri di configurazione nel caso in cui sia richiesto l’uso di un proxy per l’accesso.
Nella sezione Elaborazione Token si specificano le azioni che si possono compiere durante la fase di elaborazione del token ricevuto. Le opzioni disponibili sono:
Validazione JWT
Token Introspection
OIDC - UserInfo
Token Forward
Le sezioni successive dettagliano questi elementi.