Cos'è lo SPID e la CIE nel 2026: La Chiave Unica dei Servizi Pubblici

Nel 2026 lo SPID (Sistema Pubblico di Identità Digitale) e la CIE (Carta d'Identità Elettronica 3.0) rappresentano gli unici standard autorizzati in Italia e nell'Unione Europea (tramite il regolamento eIDAS) per accedere ai portali della Pubblica Amministrazione (INPS, Agenzia delle Entrate, Fascicolo Sanitario, ANPR, Portale Immigrazione, Portale Passaporti).

📌 Domanda frequente da Reddit: "Qual è la differenza tra Livello 1, 2 e 3 di SPID?"

Livello 1: Accesso con solo Nome Utente e Password (usato raramente per servizi a basso rischio).
Livello 2 (Standard più diffuso): Username + Password + Codice OTP inviato via App o SMS (richiesto per INPS, Agenzia delle Entrate, Questura).
Livello 3: Accesso con smart card fisica o chiave crittografica hardware (richiesto per transazioni finanziarie o firme digitali avanzate).

Come Attivare lo SPID in Pochi Minuti

Per richiedere lo SPID occorrono:

  • Un documento d'identità italiano valido (Carta d'Identità, Passaporto o Patente).
  • La Tessera Sanitaria con Codice Fiscale valido.
  • Un indirizzo email personale e un numero di cellulare.

I provider più utilizzati sono Poste Italiane (PosteID), InfoCert, SpidItalia e Aruba. Se possiedi già una CIE con PIN e uno smartphone dotato di chip NFC, puoi attivare lo SPID in 2 minuti direttamente dall'app CieID o PosteID senza recarti di persona allo sportello.

Per Sviluppatori: Integrare SPID/CIE in un'App iOS con SwiftUI

L'autenticazione con SPID e CIE per servizi privati o federati avviene tramite protocollo OpenID Connect (OIDC) o SAML 2.0. In iOS, l'approccio raccomandato da Apple per garantire sicurezza e privacy è l'uso di ASWebAuthenticationSession.

import SwiftUI
import AuthenticationServices

@Observable
final class SpidAuthViewModel: NSObject, ASWebAuthenticationPresentationContextProviding {
    var isAuthenticated: Bool = false
    var userFiscalCode: String? = nil
    var errorMessage: String? = nil
    
    // Configura l'Identity Provider SPID (es. Poste, InfoCert, AgID gateway)
    private let authURL = URL(string: "https://auth.tuoprovider-spid.it/oidc/authorize?client_id=TUO_CLIENT_ID&response_type=code&scope=openid+profile+fiscal_number&redirect_uri=diallodev-app://spid-callback")!
    private let callbackScheme = "diallodev-app"
    
    func loginWithSpid() {
        let session = ASWebAuthenticationSession(
            url: authURL,
            callbackURLScheme: callbackScheme
        ) { [weak self] callbackURL, error in
            guard let self = self else { return }
            
            if let error = error {
                self.errorMessage = "Autenticazione annullata o fallita: \(error.localizedDescription)"
                return
            }
            
            guard let callbackURL = callbackURL,
                  let components = URLComponents(url: callbackURL, resolvingAgainstBaseURL: true),
                  let authCode = components.queryItems?.first(where: { $0.name == "code" })?.value else {
                self.errorMessage = "Codice di autorizzazione non valido"
                return
            }
            
            // Scambia l'Auth Code con il token JWT sul tuo backend sicuro
            Task {
                await self.exchangeCodeForToken(code: authCode)
            }
        }
        
        session.presentationContextProvider = self
        session.prefersEphemeralWebBrowserSession = true
        session.start()
    }
    
    func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor {
        guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
              let window = windowScene.windows.first else {
            return ASPresentationAnchor()
        }
        return window
    }
    
    private func exchangeCodeForToken(code: String) async {
        // Chiamata backend REST /api/spid/token
        self.isAuthenticated = true
        self.userFiscalCode = "DLLYNS99A01Z123X"
    }
}

Vuoi creare la tua App o hai bisogno di consulenza personalizzata?

Sviluppo app iOS native in SwiftUI, piattaforme backend scalabili e offro supporto strategico per monetizzazione e progetti internazionali.

Diallo Yunus

Diallo Yunus

Indie iOS & macOS Developer, Fondatore di DialloDev e autore di 11+ app pubblicate su Apple App Store. Aiuto startup, creator e aziende a costruire prodotti digitali di successo.