REGIONE TOSCANA REGIONE TOSCANA SU STANDARD OAUTH2 DOCUMENTO TECNICO - LINEE GUIDA PER L'INTEGRAZIONE DI APPLICAZIONI - Regione ...

Pagina creata da Antonio Ronchi
 
CONTINUA A LEGGERE
REGIONE TOSCANA REGIONE TOSCANA SU STANDARD OAUTH2 DOCUMENTO TECNICO - LINEE GUIDA PER L'INTEGRAZIONE DI APPLICAZIONI - Regione ...
REGIONE TOSCANA

LINEE GUIDA PER L'INTEGRAZIONE DI APPLICAZIONI
  NELLA INFRASTRUTTURA DI AUTENTICAZIONE DI
    REGIONE TOSCANA SU STANDARD OAUTH2

             DOCUMENTO TECNICO
REGIONE TOSCANA REGIONE TOSCANA SU STANDARD OAUTH2 DOCUMENTO TECNICO - LINEE GUIDA PER L'INTEGRAZIONE DI APPLICAZIONI - Regione ...
LINEE GUIDA PER L'INTEGRAZIONE DI
APPLICAZIONI NELLA INFRASTRUTTURA DI
AUTENTICAZIONE DI REGIONE TOSCANA SU
STANDARD OAUTH2

Controllo del Documento
Numero di Versione     1.10
Data del Documento     05/08/2021
Autori                 Redatto da        C.Simonelli (TAI), G.Graziano (TAI), A.Poli
                                         (Link.it)
                       Revisionato da    F.Fornasari (TAI)
                       Approvato da
Stato                  Proposto per approvazione

Storia del documento
 Versione            Data                          Descrizione
    1.0        01/06/2018                          Prima Versione
    1.1        24/07/2018           Ristrutturazione di alcune spiegazioni e casi
                                                        d’uso
    1.2        17/09/2018                    Integrazione Api Gateway
    1.3        02/10/2018                  Inserite ulteriori precisazioni
    1.4        18/10/2018                        Aggiornati Scope
    1.5        28/02/2019                 Rimosso supporto implicit grant
    1.6        08/07/2020                Rimossi riferimenti extra OAuth2
    1.7        17/11/2020               Aggiunge informazioni su AuthRefId
    1.8        17/11/2020      Reintroduzione paragrafo API Gateway del CART
    1.9        05/07/2021                   Aggiunte specifiche Logout
    1.10       05/08/2021                       Integrazione Eidas
    1.11       11/10/2021            Revisione per introduzione eIDAS e Spid
                                                  Professionale
    1.12       07/12/2021                      Introdotto Allegato A
    1.13       20/12/2021                        Correzione refusi

                                                                                    2
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

Indice del documento

1            Introduzione ................................................................................... 5
1.1          Standard di riferimento ......................................................................................................................... 7
1.2          Casi d’uso ............................................................................................................................................... 7
2            Client ............................................................................................. 7
3            Resource Server .............................................................................. 8
3.1          Erogazione dei servizi mediante API Gateway del CART ....................................................................... 9
3.2          Erogazione diretta dei servizi da parte del Resource Server ............................................................... 10
     3.2.1        Verifica Access Token attraverso Introspection                                                                                                     11
     3.2.2        Verifica Access Token attraverso decodifica JWT                                                                                                    12
     3.2.3        Formato Access Token JWT e risposta Introspection.                                                                                                 12

4            Authorization Server .......................................................................16
5            Monitoraggio delle applicazioni e logging ...........................................19
5.1          5.1 Utilizzo AuthRefId .......................................................................................................................... 20
6            Logout ..........................................................................................20
1.           Allegato A - Authentication Type.......................................................22
a.           Introduzione ........................................................................................................................................ 22
b.           Tipologia identità digitali supportate per tipologia di autenticazione ................................................ 23
c.           Differenze di base tra gli Authentication Types .................................................................................. 23
d.           Schema attributi per Authentication Types ........................................................................................ 25

                                                                                                                                                                       3
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

Indice delle tabelle
Tabella 1: Endpoint Token Introspection                       11
Tabella 2: Endpoint certificato Json Web Key                  12
Tabella 3: Attributi Access Token                             13
Tabella 4: Esempio di risposta - token introspection          14
Tabella 5: Attributi Opzionali Access Token e Introspection   15
Tabella 6: Esempio di risposta - token introspection          15
Tabella 7: Authorization request con scope                    16
Tabella 8: Endpoint UserInfo                                  16
Tabella 9: Attributi UserInfo                                 17
Tabella 10: UserInfo response                                 18
Tabella 11: Schema attributi per Authentication Type          27

                                                               4
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

1 Introduzione
L’obiettivo del documento è fornire le linee guida che consentano, a servizi http oppure
applicazioni mobile, di effettuare l’autenticazione attraverso gli standard OAuth2 e
OpenId Connect.
Oauth2 definisce quattro ruoli:
   1) Resource Owner (il soggetto fisico o giuridico che autorizza il servizio o l’app
       ad accedere ai propri dati)
   2) Client sono le applicazioni (Web, Mobile, Desktop) che desiderano accedere alle
       informazioni dell’utente.
   3) Resource Server sono servizi http che possono essere utilizzati dai client una
       volta ottenuto il token di accesso.
   4) Authorization Server è il componente di infrastruttura che si occupa di
       autenticare il soggetto e rilascia access token ai client autorizzati.

La documentazione riguarda sia gli sviluppatori di applicazioni Client che gli sviluppatori
dei Resource Server.

In funzione degli scenari di deploy dei singoli progetti saranno possibili varie modalità
di utilizzo delle specifiche di cui sopra. La figura che segue mostra uno schema di
dispiegamento in un tipico scenario applicativo basato su OAuth2.

                               Figura 1 - Tipico Scenario Oauth2

L'applicazione Client interagisce con l'Authorization Server per ottenere il Token
necessario per l'accesso ai servizi erogati dal Resource Provider. In questa fase, in
funzione delle caratteristiche dell’applicazione client potrà essere coinvolto l’utente

                                                                                          5
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

finale, sia per la sua autenticazione, che per l’eventuale espressione del consenso
all’accesso dei propri dati da parte delle applicazioni coinvolte. Il Token ottenuto
dall’applicazione Client sarà quindi trasmesso dal Client al Resource Provider nelle
successive richieste applicative. Il Resource Provider potrà quindi provvedere alla
validazione del token ed all’autorizzazione della richiesta sulla base delle informazioni
contenute nel token, prima di consentire l’accesso del Client alle risorse richieste.

Una possibile variante di questo scenario di dispiegamento prevede la presenza dell’API
Gateway a protezione del Resource Server, come mostrato nella figura seguente.

                        Figura 2 -   Scenario OAuth2 con API Gateway

Il comportamento delle applicazioni in gioco è molto simile al caso precedente, tranne
per quanto riguarda la possibilità di delegare all’API Gateway una parte delle funzioni di
validazione del token e di autorizzazione delle richieste in arrivo. Tutte le informazioni
necessarie per la corretta operatività o per attivare meccanismi di autorizzazione più
specifici saranno comunque trasmesse al Resource Provider, ma solo dopo aver
effettuato opportune verifiche sulla correttezza della richiesta ricevuta.

Nel seguito del documento saranno descritte le modalità di integrazione previste per le
applicazioni di tipo Client e di tipo Resource Provider.

                                                                                         6
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

1.1 Standard di riferimento
Le modalità di integrazione descritte nel seguito fanno riferimento agli
standard OAuth2, OIDC 1.0 e JWT, ed in particolare ai documenti di specifica
elencati nella tabella seguente, di cui si assume la conoscenza da parte del
lettore.

          Specifica                                     Riferimento
OAuth     2.0     Authorization https://tools.ietf.org/html/rfc6749
Framework
OpenID Connect 1.0 Core (OIDC) http://openid.net/specs/openid-connect-core-1_0.htm

OAuth     2.0     Authorization https://tools.ietf.org/html/rfc6750
Framework: Bearer Token Usage
OAuth 2.0 Token Introspection   https://tools.ietf.org/html/rfc7662

JSON Web Token (JWT)             https://tools.ietf.org/html/rfc7519

                                 https://www.agid.gov.it/sites/default/files/repository_files/c
Autenticazione Spid              ircolari/regolamento_modalita_attuative_spid_2.0.pdf

1.2 Casi d’uso
Per i casi di uso e le modalità di integrazione si rimanda al manuale operativo
apposito:
CASI D’USO INTEGRAZIONE DI APPLICAZIONI NELLA INFRASTRUTTURA DI
AUTENTICAZIONE DI REGIONE TOSCANA SU STANDARD OAUTH2

2 Client
Il sistema autorizzativo di Regione Toscana mette a disposizione entrambe le
tipologie       di      client     definiti    nello   standard       Oauth2
(https://tools.ietf.org/html/rfc6749#section-2.1):
   ●   Confidential – Client in grado di mantenere in modo sicuro le credenziali
       rilasciate, come applicazioni web. In tal caso verranno rilasciate credenziali
       clientId e secret.
   ●   Public – Client che per loro natura non sono in grado di mantenere in modo
       sicuro le credenziali, come app mobile e client javascript. In questo caso verrà
       rilasciato il solo clientId

                                                                                              7
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

L’autenticazione dei client dovrà avvenire utilizzando clientId e secret in accordo
a quanto indicato nella sezione “Client Password” del RFC6749
(https://tools.ietf.org/html/rfc6749#section-2.3.1).
Le credenziali client verranno rilasciate a seguito di una richiesta che contenga
almeno le seguenti informazioni:
   1) Nome dell’applicazione Client
   2) Access type: Confidential o Public.
   3) Grant Type: Authorization Grant o Client Credential Grant
   Solo per Grant Type Authorization:
   4) Redirect URL dove inviare il code per il recupero dell’access token.
   5) Livello di autenticazione utente minimo richiesto dal Client (livello 2 o 3 Spid,
      CNS). Default: 4

È possibile inoltre richiedere i seguenti controlli attivabili in fase di rilascio del token al
Client da parte dell’Authorization Server:

   6) Solo per la tipologia Authorization Grant è possibile specificare i ruoli richiesti agli
      utenti coinvolti.

   7) Lista eventuali Resource Server (Audience) a cui il token è destinato. Default:
      ammesso solo l’utilizzo della funzionalità di UserInfo (vedi Authorization Server,
      UserInfo EndPoint).

3 Resource Server

Resource server è il termine OAuth2 utilizzato per definire i servizi http che
possono    essere     invocati   utilizzando un   token   di  accesso     (vedi
https://tools.ietf.org/html/rfc7662).
Per integrare un servizio all’interno dell’infrastruttura di Regione Toscana
dovranno essere fornite le seguenti informazioni:
   1) Nome dell’applicazione
   2) Modalità di erogazione dei servizi: diretta. In funzione della tipologia di deploy
      degli applicativi, che sarà concordata per ogni progetto con i referenti di Regione
      Toscana, i Resource Server potranno operare in una delle due modalità.
   3) Solo per grant type Authorization è possibile indicare il livello di autenticazione
      minimo richiesto. Se non configurato si intende il livello più elevato (CNS).

È possibile inoltre attivare i seguenti ulteriori controlli attivabili in fase di rilascio del
token al Client da parte dell’Authorization Server:

                                                                                              8
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

   4) Elenco degli scope gestiti dal Resource Server (ad esempio, LetturaDatiSanitari).
      Tale informazione sarà utilizzata in fase di rilascio del token per verificare la
      coerenza degli scope richiesti dai Client. Resta comunque a carico del Resource
      Server consentire l’accesso alla funzionalità desiderata solo se nel token sono
      presenti gli scope necessari.
      Default: se non richiesto ne viene generato uno per il Resource Server che sarà
      comunicato dai gestori dell’infrastruttura.

3.1 Erogazione dei servizi mediante API Gateway del CART
In questa modalità, le richieste in arrivo dai Client sono mediate dall’API Gateway del
CART, che si occuperà di:

   1. validare l’access token in arrivo; nel caso questo non sia valido la richiesta sarà
      scartata immediatamente senza nessuna interazione con il Resource Server;

   2. estrarre le informazioni contenute nel token al fine di tracciamento della richiesta;

   3. se richiesto, le seguenti informazioni contenute nel token potranno essere
      utilizzate per l’autorizzazione della richiesta:

      ●   Elenco di Ruoli RT dell’Utente: la richiesta sarà autorizzata solo se l’utente
          possegga uno solo o tutti i ruoli indicati.

      ●   Elenco di Scope: la richiesta sarà autorizzata solo se l’utente possegga uno
          solo o tutti gli ‘scope’ indicati.

      ●   Elenco di Audience: nel token deve essere presente il claim ‘aud’ e deve
          corrispondere ad uno dei valori indicati

      ●   Elenco di Client: nel token deve essere presente il claim ‘azp’ e deve
          corrispondere ad uno dei valori indicati

      ●   Livello di Autenticazione: la richiesta sarà autorizzata solo se l’autenticazione
          dell’utente sia avvenuta al livello indicato

      Politiche più complesse, non realizzabili tramite le regole di cui sopra, possono
      essere espresse tramite policy XACML. In tal caso sarà disponibile il necessario
      supporto per la realizzazione delle policy.

      I criteri di autorizzazione possono essere eventualmente differenziati per le
      diverse risorse invocate (HttpMethod + Path).

   4. Infine, se le fasi precedenti sono state superate con successo, la richiesta sarà
      propagata al Resource Server, includendo sia l’Access Token originale
      (decodificabile come specificato nella successiva sezione 3.2- Erogazione diretta
      dei servizi da parte del Resource Server) che le informazioni contenute nel token

                                                                                          9
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

      decodificate all’interno di appositi header HTTP della richiesta applicativa, come
      specificato nella tabella seguente.

Header Name Header Value

X-CART-id         identificativo unico di transazione generato dalla PdA del CART

X-CART-           timestamp gestione transazione da parte della PdA, espresso come
pdaTime           secondi trascorsi dal 1 Gennaio 1970.

                identificativo dell’applicativo che ha effettuato la richiesta applicativa.
X-CART-clientId L’informazione è presente solo se l’autenticazione del client è abilitata
                sull’API Gateway per questo tipo di richiesta.

X-CART-
fiscalNumber
X-CART-name
                  Informazioni estratte dall’access token, se presenti. Il formato è lo
X-CART-
                  stesso descritto nella sezione Verifica Access Token attraverso
familyName
                  decodifica JWT.
X-CART-email
X-CART-
ivaCode

X-CART-
                  identificativo dell’applicazione client che ha generato il token Oauth.
oauthClientId

                  elenco degli scope, separati con una virgola, eventualmente presenti
X-CART-scope
                  nel token Oauth.

                  elenco       dei      ruoli dell’utente,  separati      da     virgola.
X-CART-roles      In questa modalità vengono forniti soltanto i ruoli di un utente e non
                  i relativi attributi.

3.2 Erogazione diretta dei servizi da parte del Resource Server
Nel caso in cui il Resource Server sia esposto direttamente, dovrà necessariamente
effettuare la validazione dell'access token che riceverà secondo la modalità
“Authorization Request Header Field” prevista dalla specifica “RFC 6750 - Bearer Token
Usage” (https://tools.ietf.org/html/rfc6750#section-2.1).
Successivamente il resource server, al fine di limitare l’accesso alle proprie API, può
estrarre le informazioni disponibili nell’access token. Per farlo, può utilizzare una delle
due modalità seguenti:

                                                                                         10
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

    1. Attraverso l’invocazione del servizio Token Introspection
    2. Mediante decodifica access token JWT (Json Web Token)

3.2.1 Verifica Access Token attraverso Introspection
Per ogni Resource Server viene generata una credenziale client di tipo “confidential” che
può essere usata dal gestore del resource server per accedere alla funzionalità di token
introspection.
L’endpoint Introspect è messo a disposizione dall’infrastruttura di Regione Toscana ed
è realizzato secondo lo standard RFC7662 (https://tools.ietf.org/html/rfc7662)
In figura è mostrato il diagramma di sequenza di utilizzo del servizio introspect:

                             Figura 3: Invocazione Servizio Introspect

Di seguito la descrizione delle operazioni nel caso di utilizzo del servizio introspection:
   1) Il Resource Server riceve un’invocazione con l’access token presente nella
      richiesta
   2) Il Resource Server effettua un’invocazione all’endpoint Introspect con l’access
      token ricevuto allo step precedente e le credenziali
   3) L’authorization Server risponde con le informazioni relative alla validità del token
   4) Il Resource Server verifica la validità del token (effettua caching per richieste
      successive) e verifica che lo scope sia valido per l’API invocata ed eventualmente
      esegue il metodo richiesto e restituisce il risultato.

L’endpoint per decodificare l’access token è il seguente:
Specifica                           EndPoint Introspection

                                                                                         11
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

OAuth 2.0 Token Introspection Ambiente di Produzione
                                 https://accessosicuro.rete.toscana.it/auth/realms/arp
https://tools.ietf.org/html/rfc7 a/protocol/openid-connect/token/introspect
662

                             Tabella 1: Endpoint Token Introspection

La richiesta sarà effettuata tramite basic authentication, utilizzando le credenziali
(client_id e client_secret) ottenute in fase di registrazione. Il formato della risposta è
descritto nel prossimo paragrafo.

3.2.2 Verifica Access Token attraverso decodifica JWT
L’access Token che il resource server riceve è nel formato JWT (JSON Web Token,
RFC7519 https://tools.ietf.org/html/rfc7519) che contiene praticamente le stesse
informazioni che si otterrebbero invocando il servizio introspect.
Attraverso la decodifica dell’access token non è quindi necessario invocare il servizio
introspect ma è sufficiente validare il token (come durata temporale) e la chiave come
indicato da specifica JSON Web Key.

Specifica                             EndPoint Certificati
                                   Ambiente di Produzione
JSON            Web            Key
                                   https://accessosicuro.rete.toscana.it/auth/realms/
https://tools.ietf.org/html/rfc751 arpa/protocol/openid-connect/certs
7

                           Tabella 2: Endpoint certificato Json Web Key

3.2.3 Formato Access Token JWT e risposta Introspection.
Sia nel caso di utilizzo del servizio token introspection che attraverso la decodifica JWT
dell’access token è possibile recuperare gli attributi che permettono di stabilire validità
del token, metodo di autenticazione utilizzato, ecc. Gli attributi restituiti sono descritti
in Tabella 3.
Nome                     Descrizione

jti                      Identificativo unico per il token

exp, nbf                 Definisce l'intervallo di tempo entro il quale un token è valido. Il
                         servizio che convalida il token deve verificare che la data corrente
                         sia compresa nella durata del token. In caso contrario, deve
                         rifiutare il token.

                                                                                           12
LINEE GUIDA PER L'INTEGRAZIONE DI
APPLICAZIONI NELLA INFRASTRUTTURA DI
AUTENTICAZIONE DI REGIONE TOSCANA SU
STANDARD OAUTH2

iat                   Archivia l'ora in cui è stato rilasciato il token. Viene spesso
                      usata per misurare la validità del token.
iss                   Identifica il servizio token di sicurezza (STS) che
                      costruisce e restituisce il token.
aud                   Destinatario previsto per il token. L'applicazione che
                      riceve il token deve verificare che il valore del gruppo di
                      destinatari sia corretto e rifiuta tutti i token destinati a un
                      gruppo di destinatari diverso.
sub                   Identifica l'entità su cui il token asserisce informazioni, ad
                      esempio l'utente di un'applicazione. Questo valore non è
                      modificabile e non può essere riassegnato o riutilizzato, è
                      quindi possibile usarlo per eseguire controlli di
                      autorizzazione in modo sicuro.
typ                   Tipo del token

azp                   Parte autorizzata – applicazione a cui è stato rilasciato il
                      token
auth_time             Tempo di vita dell’accessToken

session_state         Valore univoco che identifica la sessione utente corrente.

acr                   Indica la modalità di autenticazione del soggetto, invece
                      del client, nell'attestazione di riferimento alla classe
                      contesto di autenticazione dell'applicazione. Il valore "0"
                      indica che l'autenticazione dell'utente finale non soddisfa
                      i requisiti ISO/IEC 29115.
scope                 Lista degli scope per i quali l’access token è stato
                      rilasciato
auth_type             Indica lo strumento di autenticazione utilizzato per
                      l’accesso. Nel caso di accesso con SPID sarà valorizzato
                      con      l’identificativo  del    Provider    utilizzato.
                      Fare riferimento al file ‘Allegato A’ per maggiori
                      informazioni.
auth_level            Livello di autorizzazione utilizzato per l’accesso,
                      valorizzato con un numero compreso tra 1 (livello minimo
                      di autorizzazione, corrispondente a Spid livello 1) e 4
                      (livello massimo, corrispondente ad accesso con CNS).

                                                                                    13
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

                            -   In caso di accesso con SPID, il livello corrispondente è il
                                livello di SPID utilizzato (1,2 o 3)
                            -   In caso di accesso con CIE: il livello corrispondente è 3
                            -   In caso di accesso con CNS: il livello corrispondente è 4

authID                   Auth ID associato al token con cui e’ stato generato
                         questo evento
spid_code                Identificativo associato univocamente   alla coppia
                               che     autenticata.
                         Non è presente in caso di autenticazione con CIE.
                                Tabella 3: Attributi Access Token

Di seguito è mostrato un esempio di Access Token
 {
  "jti": "7ddd6563-b3ae-4fd1-98eb-da3299ab0c17",
  "exp": 1532339253,
  "nbf": 1532338000,
  "iat": 1532338953,
  "iss": "https://accessosicuro.rete.toscana.it/auth/realms/arpa",
  "aud": "clientID",
  "sub": "adac8715-ae9a-45f8-9399-5ac3a747f828",
  "typ": "Bearer",
  "azp": " clientID ",
  "auth_time": 1532338694,
  "session_state": "53904b71-3178-4b0d-b83a-ad7005893562",
  "acr": "0",
  "scope": "read_contact”,
  "auth_type": "CNS",
  "auth_level": "4"
 }

                       Tabella 4: Esempio di risposta - token introspection

È possibile ottenere attributi utente aggiuntivi se il relativo scope è stato richiesto, dal
client, in fase di autorizzazione (vedi https://openid.net/specs/openid-connect-core-
1_0.html#AuthRequest). L’elenco degli scope qualificanti è descritto in Tabella 5.
Nome                        Scop        Descrizione
                            e

                                                                                          14
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

name                        profile    Nome dell’utente. Presente in caso di persona
                                       fisica
family_name                 profile    Cognome dell’utente. Presente in caso di
                                       persona fisica
preferred_usernam           profile    Codice fiscale dell’utente in caso di persona
e                                      fisica oppure partita iva nel caso di persona
                                       giuridica
fiscal_number               profile    Codice fiscale dell’utente. Presente in caso di
                                       persona fisica. Per il formato si faccia
                                       riferimento alla codifica
                                       dell’attributo CF per i certificati, proposta
                                       nell’ambito del Draft ETSI EN 319 412-1, che
                                       nel
                                       caso      specifico  prevede        la   seguente
                                       composizione:
                                       TINIT-
                                       Questo campo non appare quando
                                       l’auth_type è di tipo Eidas
iva_code                    profile    Partita iva dell’utente. Presente in caso di
                                       persona giuridica. Per il formato si faccia
                                       riferimento alla codifica
                                       dell’attributo Partita IVA per i certificati,
                                       proposta
                                       nell’ambito del Draft ETSI EN 319 412-1, che
                                       nel
                                       caso      specifico  prevede   la   seguente
                                       composizione:
                                       VATIT-
                   Tabella 5: Attributi Opzionali Access Token e Introspection

Di seguito è mostrato un esempio di Access Token per il quale viene richiesto lo scope
profile.
 {
  "jti": "7ddd6563-b3ae-4fd1-98eb-da3299ab0c17",
  "exp": 1532339253,
  "nbf": 1532338000,
  "iat": 1532338953,

                                                                                      15
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

  "iss": "https://accessosicuro.rete.toscana.it/auth/realms/arpa",
  "aud": "client_id",
  "sub": "adac8715-ae9a-45f8-9399-5ac3a747f828",
  "typ": "Bearer",
  "azp": "client_id",
  "auth_time": 1532338694,
  "session_state": "53904b71-3178-4b0d-b83a-ad7005893562",
  "acr": "0",
  "scope": " read_contact profile",
  "auth_type": "CNS",
  "auth_level": "4",
  "name": "MARCO",
  "family_name": "ROSSI",
  "fiscal_number": " TINIT-marrssg78dsaf7sad8f9",
  "preferred_username": "marrssg78dsaf7sad8f9"
 }
                       Tabella 6: Esempio di risposta - token introspection

4 Authorization Server
L’authorization server è parte dell’infrastruttura di Regione Toscana e realizzato secondo
le specifiche Oauth2 e OpenId Connect.
Supporta i seguenti authorization grant:
     ● Code per Authorization code grant
     ● Access Token per Client Credential

Di seguito sono descritti gli standard di riferimento e gli endpoint per gli ambienti di
staging e produzione.
Specifica Modalità di           EndPoint Authorization Server
          ottenimento del Token
OIDC        Authorization Code grant: Ambiente di Produzione
                                      1. Authorization:
            https://openid.net/specs/    https://accessosicuro.rete.toscana.it/auth/r
            openid-connect-core-         ealms/arpa/protocol/openid-connect/auth
            1_0.html#CodeFlowAuth
                                      2. Token:
                                         https://accessosicuro.rete.toscana.it/auth/r
                                         ealms/arpa/protocol/openid-connect/token

                                                                                        16
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

OAuth2       Client Credentials grant: Ambiente di Produzione
                                        3. Token:
             https://tools.ietf.org/htm    https://accessosicuro.rete.toscana.it/auth/r
             l/rfc6749#section-1.3.4       ealms/arpa/protocol/openid-connect/token
                            Tabella 7: Authorization request con scope

L’invocazione per ottenere il JSON della userinfo è la seguente:

Specifica                          EndPoint UserInfo
OIDC User Info EndPoint:      Ambiente di Produzione
                              https://accessosicuro.rete.toscana.it/auth/realms/arp
https://openid.net/specs/open a/protocol/openid-connect/userinfo
id-connect-core-
1_0.html#UserInfo

                                  Tabella 8: Endpoint UserInfo

L’endpoint UserInfo, come da specifiche, accetta l’access Token nell’header
Authorization della richiesta.
La lista degli attributi restituiti dalla UserInfo sono dipendenti dagli scope richiesti dal
client in fase di autorizzazione. Nella Tabella 9 sono mostrati gli attributi restituiti dalla
UserInfo.

Nome                         Scope            Descrizione

name                         profile          Nome dell’utente. Presente in caso di persona
                                              fisica
family_name                  profile          Cognome dell’utente. Presente in caso di
                                              persona fisica
preferred_username           profile          Codice fiscale dell’utente in caso di persona
                                              fisica oppure partita iva nel caso di persona
                                              giuridica
gender                       profile          Opzionale. Valori ammessi: “F” per sesso
                                              femminile “M” per sesso maschile. Presente
                                              solo in caso di persona fisica
birthdate                    profile          Opzionale. Data di nascita secondo la
                                              specifica xs:date nel format. Presente solo in
                                              caso di persona fisica
birthplace                   profile          Opzionale. Stringa corrispondente al codice
                                              catastale (Codice
                                              Belfiore ) del Comune o della nazione estera
                                              di

                                                                                            17
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

                                           nascita.
                                           (Es. “F205” per la citta di Milano ) . Non
                                           obbligatorio ed eventualmente presente solo
                                           in caso di persona fisica
fiscal_number             profile          Codice fiscale dell’utente. Presente in caso di
                                           persona fisica. Per il formato si faccia
                                           riferimento alla codifica
                                           dell’attributo CF per i certificati, proposta
                                           nell’ambito del Draft ETSI EN 319 412-1, che
                                           nel
                                           caso     specifico   prevede       la   seguente
                                           composizione:
                                           TINIT-
                                           Questo campo non appare quando
                                           l’auth_type è di tipo Eidas
iva_code                  profile          Partita iva dell’utente. Presente in caso di
                                           persona giuridica. Per il formato si faccia
                                           riferimento alla codifica
                                           dell’attributo Partita IVA per i certificati,
                                           proposta
                                           nell’ambito del Draft ETSI EN 319 412-1, che
                                           nel
                                           caso     specifico   prevede   la   seguente
                                           composizione:
                                           VATIT-
                                           Questo campo non appare quando
                                           l’auth_type è di tipo Eidas

address                   address          Opzionale, Json contenente i seguenti campi:
                                           street_address,
                                           locality,
                                           postal_code,
                                           country,
                                           digital_address (PEC)
email                     email            Opzionale. Formato standard indirizzo di
                                           posta elettronica.

phone_number              phone            Opzionale. Numero di telefono cellulare
                               Tabella 9: Attributi UserInfo

Di seguito un esempio di risposta dell’invocazione UserInfo con scope profile.

                                                                                         18
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

 {
  "sub":"adac8715-ae9a-45f8-9399-5ac3a747f828",
  "name": "MARCO",
  "family_name": "ROSSI",
  "fiscal_number": " TINIT-marrssg78dsaf7sad8f9",
  "preferred_username": "marrssg78dsaf7sad8f9",
  "birthdate":"1970-01-01",
  "email":"email@email.com"
 }
                                Tabella 10: UserInfo response

Di seguito un esempio di risposta dell’invocazione UserInfo quando l’auth_type è di tipo
Eidas.
 {
 "sub":"f:e93071f9-9824-436f-9986-
 b9da2eb3fe4d:pmrhk43fojxgc3lfei5ceskuf5evil2bjfcfambqgaytmojyg
 y4deirmejxgc3lfei5cetdbovzgcirmejzxk4tomfwzfceafwrhjnhxdfgvserf
 aWSDqeq23rfrsfgsdgbfcbcghfxgfvsxfgdgd",
 "auth_type": "Eidas",
 "birthdate": "",
 "email_verified": false,
 "auth_level": "1",
 "name": "MARIO",
 "spid_code": "IT/IT/AIDP0009999999",
 "preferred_username": "IT/IT/AIDP0009999999",
 "family_name": "ROSSI"
 }

                           Tabella 11: UserInfo response per eIDAS

5 Monitoraggio delle applicazioni e logging
E’ importante che le applicazioni integrate nella infrastruttura tengano traccia delle
informazioni di accesso fornite da ARPA al fine di un eventuale riscontro sugli accessi
effettuati dai soggetti.

I dati che suggeriamo vengano memorizzati a livello applicativo e che sono utili al
tracciamo sono i seguenti:

                                                                                      19
LINEE GUIDA PER L'INTEGRAZIONE DI
    APPLICAZIONI NELLA INFRASTRUTTURA DI
    AUTENTICAZIONE DI REGIONE TOSCANA SU
    STANDARD OAUTH2

    auth_time        data ed ora di autenticazione su ARPA in formato UNIX

    fiscal_number    codice fiscale in formato unico europeo dell’utente che si è
                     autenticato

    auth_type        tipo di strumento utilizzato per l’autenticazione

    auth_level       livello di autorizzazione utilizzato per l’accesso

    authID           identificativo della request
                          Tabella 12: Elenco degli attributi per il tracciamento

5.1 5.1 Utilizzo AuthRefId1
Viene resa disponibile una modalità di correlazione (AuthRefId) che permette ad
un’applicazione di fornire un proprio identificativo di chiamata nelle richieste di
autenticazione inviate ad ARPA.
Per permettere alle applicazioni il tracciamento delle operazioni effettuate dall’utente
prima che sia stato riconosciuto da Arpa, è necessario includere l’attributo AuthRefId.
Questo consente di tracciare, ad esempio:
    1. Tutte le attività effettuate dall’utente prima, durante e dopo l’autenticazione
    2. Monitorare quanti utenti si fermano alla pagina di login senza effettivamente
        autenticarsi
È sufficiente aggiungere il query parameter AuthRefId all’url di redirect valorizzato con
l’identificativo all’interno dell’applicativo.

Supponiamo ad esempio che l’url di redirect sia http://miaapplicazione/callBack dovrà
essere modificata in

        http://miaapplicazione/callBack?AuthRefId=VALORE_DESIDERATO

Precisiamo che questo parametro non viene persistito da ARPA ed è pertanto
transiente, in quanto è da intendersi ad uso e consumo del fornitore dell’applicativo,
non di ARPA.

6 Logout
Le applicazioni integrate con ARPA devono implementare correttamente il meccanismo
di Logout.

1
 https://oscat.rete.toscana.it/docman/view.php/803/7063/%5BAccessoSicuro+2020%5D++ARPA+-
+MONITORAGGIO+ACCESSI+APPLICATIVI.pdf

                                                                                           20
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

La specifica del Logout per l’ambiente di Staging è la seguente:

POST https://accessosicuro-
trial.rete.toscana.it/auth/realms/arpa/protocol/openid-connect/logout
Authorization: Bearer 
Content-Type: application/x-www-form-urlencoded

client_id=&refresh_token= (per client di tipo
"public")

client_id=&client_secret=&refresh_token= (per client "confidential")
Per implementare la funzionalità in ambiente di Produzione:

POST https://accessosicuro.rete.toscana.it/auth/realms/arpa/protocol/openid-
connect/logout
Authorization: Bearer 
Content-Type: application/x-www-form-urlencoded

client_id=&refresh_token= (per client di tipo
"public")

client_id=&client_secret=&refresh_token= (per client "confidential")

In alternativa, senza dover fare chiamate REST, redirezionare l'utente alla
seguente url quando questo clicca sul pulsante di Logout:

Staging
https://accessosicuro-trial.rete.toscana.it/auth/realms/arpa/protocol/openid-
connect/logout?redirect_uri=

Produzione
https://accessosicuro.rete.toscana.it/auth/realms/arpa/protocol/openid-
connect/logout?redirect_uri=

                                                                                21
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

   1. Allegato A - Authentication Type

   a. Introduzione
In questo allegato presentiamo l’elenco degli strumenti a norma che possono
essere utilizzati per l’autenticazione sulla piattaforma ARPA.
Ogni strumento utilizzato restituisce un insieme di dati descrittivi dell’utente, sia
fisico che giuridico, che possono essere utilizzati per riconoscere e caratterizzare
l’utente stesso.
Il termine ‘strumento di autenticazione’ verrà da ora in poi sostituito con il
termina ‘AuthType’ o ‘Authentication Type’, per dare una sintassi più aderente
a          quanto           verrà         riscontrato         nella          pratica.

Nel token JWT, troviamo il dato evidenziato in Tabella 1: esempio di JSON con
auth_type

"fiscal_number": "TINIT-FRMTTR76M06B715E",
"sub": "e2385864-6e12-430a-9adc-55915a754454",
"auth_type": "PosteIDPSpid",
"birthdate": "1976-08-06",
"email_verified": false,
"auth_level": "3",
"name": "ETTORE",
"spid_code": "cbc16c17-294e-43d3-a1f1-37f1019adf61",
"preferred_username": "FRMTTR76M06B715E",
"family_name": "FIERAMOSCA",
"email": "trediciitalianicontrotredicifrancesi@hotmail.com"
                                  Tabella 13: esempio con auth_type

Di seguito sono riportati le possibili valorizzazioni di authType in funzione del
metodo di autenticazione utilizzato:
   ● CNS - Per autenticazioni CNS
   ● EIDAS - Per autenticazione con Login Eidas (vedi Progetto FICEP)
   ● CIE - Per autenticazioni CIE
   ● RegisterSpid - Per autenticazioni SPID con IDP Register
   ● LepidaSpid - Per autenticazioni SPID con IDP Lepida
   ● InfocertIDPSpid - Per autenticazioni SPID con IDP Inforcert
   ● SielteSpid - Per autenticazioni SPID con IDP Sielte
   ● TimIDPSpid - Per autenticazioni SPID con IDP Tim
   ● IntesaIDPSpid - Per autenticazioni SPID con IDP Intesa
   ● PosteIDPSpid - Per autenticazioni SPID con IDP Poste
   ● ArubaSpid - Per autenticazioni SPID con IDP Aruba
   ● NamirialSpid - Per autenticazioni SPID con IDP Namirial

                                                                                   22
LINEE GUIDA PER L'INTEGRAZIONE DI
    APPLICAZIONI NELLA INFRASTRUTTURA DI
    AUTENTICAZIONE DI REGIONE TOSCANA SU
    STANDARD OAUTH2

      b. Tipologia identità digitali supportate per tipologia di autenticazione
Di seguito sono riportate le tipologie di identità digitali supportate per tipologia
di autenticazione:
   ● Spid (Sistema Pubblico per l’Identità Digitale)23
         ○ Identità digitale della persona fisica
         ○ Identità digitale ad uso professionale della persona fisica4
         ○ Identità digitale ad uso professionale per la persona giuridica
   ● CNS (Carta Nazionale dei Servizi)
         ○ Persona fisica ad uso privato
   ● CIE (Carta di Identità Elettronica)
         ○ Persona fisica ad uso privato
   ● eIDAS (electronic IDentification Authentication and Signature)
         ○ Persona fisica ad uso privato

Esiste un insieme minimo di attributi che vengono restituiti da tutte le tipologie
di autenticazione, la mappa completa degli attributi restituiti è riportata nel
paragrafo Schema attributi per AuthType.

Per quanto riguarda i nuovi tipi di autenticazione presenti, ovvero eIDAS e Spid-
P, il processo di integrazione rimane invariato.

      c. Differenze di base tra gli Authentication Types
L’autenticazione con eIDAS non prevede il recupero del codice fiscale
dell’utente, ma l’utilizzo del campo SPID code: un identificativo associato
univocamente alla coppia  che viene autenticata.

In caso di autenticazione con eIDAS è pertanto necessario, come codice unico
di autenticazione, utilizzare il campo ‘spid_code’, che contiene l’identificativo
univoco dell’utente così come valorizzato dalla autenticazione Login EIDAS.

Il campo ‘spid_code’ è valorizzato dagli identity provider SPID secondo le linee
guida. Esempio:

      ● cbc16c17-294e-43d3-a1f1-37f1019adf61

2
                                     https://www.agid.gov.it/sites/default/files/repository_files/spid-avviso-n18_v.2-
_autenticazione_persona_giuridica_o_uso_professionale_per_la_persona_giuridica.pdf
3

https://www.agid.gov.it/sites/default/files/repository_files/linee_guida_identita_digitale_per_uso_professionale_v.1.0.p
df
4
 Identità digitale ad uso professionale della persona fisica e Identità digitale ad uso
professionale per la persona giuridica sono attivati con lo stesso tag Purpose P, pag 2 del documento
https://www.agid.gov.it/sites/default/files/repository_files/spid-avviso-n18_v.2-
_autenticazione_persona_giuridica_o_uso_professionale_per_la_persona_giuridica.pdf

                                                                                                                      23
LINEE GUIDA PER L'INTEGRAZIONE DI
 APPLICAZIONI NELLA INFRASTRUTTURA DI
 AUTENTICAZIONE DI REGIONE TOSCANA SU
 STANDARD OAUTH2

Per uniformità si è prevista la valorizzazione dello stesso campo anche per
accessi effettuati con CNS e lo stesso sarà valorizzato nella forma:
   ● arpa-frmttr76m06b715e

Per questo motivo precisiamo che ha senso considerare il suddetto campo solo
in caso di autenticazione con eIDAS o Spid.

Il campo fiscal_number è valido come codice univoco di identificazione dell’utente
come utilizzato fino ad ora per tutti gli altri metodi di autenticazione diversi da
eIDAS.

                                                                                 24
LINEE GUIDA PER L'INTEGRAZIONE DI
    APPLICAZIONI NELLA INFRASTRUTTURA DI
    AUTENTICAZIONE DI REGIONE TOSCANA SU
    STANDARD OAUTH2

       d. Schema attributi per Authentication Types
Di seguito gli attributi disponibili in base al tipo di autenticazione utilizzato.

                                                           Base                 Esteso   Completo5

                                          CNS       SPID          CIE   eIDAS   SPID       SPID

            fiscalNumber                    x          x           x              x          x

                  name                      x          x           x      x       x          x

             familyName                     x          x           x      x       x          x

                 email                                 x                          x          x

               spidCode                     x          x           x      x       x          x

    domicileStreetAddress                                                         x          x

     domicileMunicipality                                                         x          x

        domicileProvince                                                          x          x

          domicileNation                                                          x          x

      companyFiscalNumber                                                                    x

            placeOfBirth                                                  x       x          x

           countyOfBirth                                                          x          x

            dateOfBirth                                                   x       x          x

                gender                                                    x       x          x

                address                                                   x       x          x

            mobilePhone                                                           x          x

                idCard                                                            x          x

          expirationDate                                                          x          x

          digitalAddress                                                          x          x

5
    Restituiti sono nel caso di identità digitale professionale

                                                                                                     25
LINEE GUIDA PER L'INTEGRAZIONE DI
APPLICAZIONI NELLA INFRASTRUTTURA DI
AUTENTICAZIONE DI REGIONE TOSCANA SU
STANDARD OAUTH2

        ivaCode                                                                        x

   registeredOffice                                                                    x

      companyName                                                                      x
                  Tabella 14: Tabella attributi che posso essere richiesti dagli IDP

                                                                                           26
Puoi anche leggere