# Identity Provider Proxy

Un Identity Provider Proxy (abbreviato IdPP oppure IDPP) è un sistema che si interpone tra l'utente e un servizio web applicativo che richiede un'autenticazione federata prima di essere erogato. L'Identity Provider Proxy verifica se l'utente che richiede il servizio si è già autenticato. In caso contrario, l'utente viene reindirizzato al servizio dell'Identity Provider per completare il processo di autenticazione.
Una volta che l'Identity Provider ha eseguito l'autenticazione, l'utente viene reindirizzato nuovamente sull'IdPP, che verifica la validità dei dati ricevuti e conferma se l'autenticazione è avvenuta con successo. Dopo questa verifica, l'IdPP consente alla richiesta di raggiungere il servizio web per essere erogato.
Durante questo processo, l'IdPP aggiunge all'header HTTP i dati identificativi dell'utente ricevuti dall'Identity Provider ed eventualmente li arricchisce con ulteriori informazioni. Questo consente al servizio web applicativo di leggere il profilo utente e di eseguire un Single Sign-On, garantendo un accesso automatico con le caratteristiche o gli ambiti di gestione specifici dell'utente.
Il formato utilizzato per descrivere i dati del profilo utente all'interno dell'header HTTP può variare in base alle esigenze specifiche, ma è ormai comune adottare il formato JWT. L'applicazione web, ricevuti i dati in formato JWT, deve interpretarli ed eventualmente confermarne l'autenticità tramite l'IdPP. Tuttavia, questa operazione di verifica è facoltativa e dipende dal livello di sicurezza nella comunicazione tra l'applicazione web, situata nella intranet, e l'IdPP.

## Archittetura

L'architettura per l'erogazione di servizi si arricchisce con l'integrazione di uno strato Identity Provider Proxy a livello infrastrutturale. Questo livello aggiuntivo consente allo strato applicativo di acquisire il profilo utente attraverso informazioni inserite nell'header HTTP, permettendo la realizzazione di sistemi robusti di Single Sign-On infrastrutturale.
Nei datacenter, l'architettura tipica include componenti come firewall, Web Application Firewall, IdPP, sistemi di load balancing e i servizi applicativi. I sistemi più avanzati combinano le funzionalità di WAF, load balancing e IdPP in un unico prodotto, semplificando le operazioni e migliorando l'efficienza complessiva della gestione infrastrutturale.

## Vantaggi

I vantaggi di un Identity Provider Proxy si manifestano in modo significativo nelle infrastrutture enterprise, dove il sistema consente di risolvere in maniera centralizzata le problematiche legate all'autenticazione e all'autorizzazione per molteplici servizi applicativi presenti nel backend. Questa configurazione introduce un nuovo livello trasversale di autenticazione e autorizzazione che interessa tutti i servizi del backend, offrendo numerosi benefici sia in termini di sicurezza sia di velocità di implementazione, con conseguente riduzione dei costi.
Un'infrastruttura basata su un IdPP garantisce una maggiore flessibilità nell'imporre un'autenticazione forte per qualsiasi servizio, assicurando al contempo un'uniformità nella gestione delle autenticazioni all'interno del datacenter. Inoltre, l'evoluzione e l'aggiornamento dei sistemi di autenticazione risultano semplificati, in quanto tali modifiche strutturali non richiedono interventi sui singoli applicativi.
Questo approccio consente di rispettare le normative in materia di trattamento dei dati personali e di garantire la conformità alle leggi specifiche per le piattaforme governative, come la Carta d'Identità Elettronica (CIE) e il sistema SPID. L'adozione di un IdPP permette, inoltre, di unificare il sistema di logging per tutti i servizi che richiedono autenticazione, semplificando così l'intera infrastruttura e migliorandone l'efficienza.