Single Sign-On

Per SSO si intende la possibilità per il cittadino di fare login sull'area personale o su un servizio digitale e non dovrelo ripetere se si sposta su un altro servizio digitale dello stesso Ente.

La piattaforma Opencity Italia supporta questa possibilità mediante una tecnica che permette di convertire una sessione in un token JWT. Questo consente di usare l'autenticazione senza necessariamente usare lo stesso cookie:

  1. integrarsi con altri applicativi di terze parti che possono usare un client JTW;

  2. fare chiamate cross-origin (CORS) autenticate dove non è semplice o possibile sfruttare lo stesso cookie di autenticazione;

Attenzione: il requisito perché questa tecnica funzioni è che i servizi si trovino tutti sotto lo stesso dominio di secondo livello. Ad esempio: - servizi.comune.bugliano.pi.it - www.comune.bugliano.pi.it - altro.bugliano.pi.it

Come molti applicativi web anche Opencity Italia usa i cookie per implementare la sessione utente, il cookie si ottiene semplicemente l'indirizzo di accesso degli utenti: ad esempio per il nostro Ente di demo è

Il path per fare accesso è sempre /$lingua/user

A questo punto nel proprio brower è possibile rintracciare facilmente il cookie della piattaforma.

Il token JWT

Il cookie di sessione viene inviato in modo trasparente all'utente dal browser al sito che lo ha generato, e questo garantisce che l'utente abbia sempre una sessione valida quando naviga nella sua area personale.

Per fare chiamate alle API però è necessario convertire il Cookie in Token JWT, per farlo esiste una apposita API, nel nostro esempio:

l'API per ottenere il token JWT è /api/session-auth

Per simulare la chiamata con Postman ad esempio:

Il token JWT può essere usato adesso per fare chiamate alle API che richiedono una autenticazione, ad esempio posso usare l'interfaccia Swagger delle API come segue.

Faccio click in alto a destra sul comando Authorize

A questo punto posso chiamare le API che richiedono autenticazione come la /applications

Anatomia di un Token

All'interno del token sono presenti le seguenti informazioni:

{
  "typ": "JWT",
  "alg": "RS256"
}

Payload

{
  "iat": 1711639327,
  "exp": 1712503327,
  "roles": [
    "ROLE_CPS_USER",
    "ROLE_USER"
  ],
  "username": "AAAAAANNANNAMNNNA",
  "id": "ba23337b-7b9e-4e5a-9566-e3f0583822f7",
  "tenant_id": "5962qqfb-15b7-4407-b203-47ee3456f6c3"
}

Last updated

Logo

Documentazione Opencity Italia