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.