Docs Italia beta

Documenti pubblici, digitali.

3. SDK iOS

CieID-iOS-sdk è un SDK per smartphone iOS sviluppato in linguaggio "Swift" che include le funzionalità di autenticazione di

«Entra con CIE». Utilizzando questo kit, gli sviluppatori di applicazioni terze iOS possono integrare nella propria app l'autenticazione mediante la Carta d'identità elettronica.

3.1. Requisiti tecnici

CieID-iOS-sdk richiede versione iOS 13.0 o successive, inoltre è necessario uno smartphone iOS con tecnologia NFC (iPhone 7 o successivo, non è compatibile con iPhone SE di prima generazione - mod 2016).

3.2. Requisiti di integrazione

L'utilizzo dell'SDK presuppone che il Service Provider sia correttamente federato con l'Identity Provider e che abbia implementato almeno uno tra i protocolli previsti dallo schema di autenticazione «Entra con CIE».

3.3. Come si usa

Il kit prevede il solo flusso di autenticazione con reindirizzamento di seguito descritto. L'integrazione richiede pochi semplici passaggi:

  • Importazione del kit all'interno del progetto
  • Configurazione dell'URL Scheme
  • Configurazione dell'URL di un Service Provider valido all'interno del file Info.plist
  • Configurazione dello smart button Entra con CIE all'interno dello storyboard
  • Inizializzazione e presentazione della webView di autenticazione
  • Gestione dei delegati

3.4. Flusso con reindirizzamento

Il flusso di autenticazione con reindirizzamento permette ad un Service Provider accreditato di integrare l'autenticazione Entra con CIE nella propria app iOS, demandando le operazioni di autenticazione all'app CieID. Questo flusso di autenticazione richiede che l'utente abbia l'app CieID installata sul proprio smartphone in versione 1.2.1 o successiva.

3.5. Flusso interno

Non disponibile.

3.6. Importazione

Trascinare il folder CieIDsdk all'interno del progetto xCode

3.7. Configurazione URL Scheme

Nel flusso di autenticazione con reindirizzamento l'applicazione CieID avrà bisogno aprire l'app chiamante per potergli notificare l'avvenuta autenticazione. A tal fine è necessario configurare un URL Scheme nel progetto Xcode come segue:

Selezionare il progetto Target, aprire il pannello Info ed aprire poi il pannello URL Types. Compilare i campi

Identifier e URL Scheme inserendo il Bundle Identifier dell'app, impostare poi su none il campo Role.

Il parametro appena inserito nel campo URL Scheme dovrà essere riportato nel file Info.plist, aggiungendo un parametro chiamato SP_URL_SCHEME di tipo String, come mostrato nell'esempio:

A seguito dell'apertura dell'app la webView dovrà ricevere un nuovo URL e proseguire la navigazione. Di seguito si riporta il metodo openUrlContext da importare nello SceneDelegate che implementa tale logica:

3.8. Configurazione Service Provider URL

Entrambi i flussi vengono avviati tramite l'utilizzo di una WebView, per questo motivo è necessario caricare la URL dell'ambiente di produzione della pagina web del Service Provider che integra il pulsante «Entra con CIE» all'interno del file Info.plist, aggiungendo un parametro chiamato SP_URL di tipo String, come mostrato nell'esempio:

3.9. Importazione del pulsante Entra con CIE

Aggiungere nello storyboard di progetto un oggetto di tipo UIButton ed inserire nella voce Class del menù Iden- tity inspector la classe che lo gestisce: CieIDButton. L'oggetto grafico verrà automaticamente renderizzato con il pulsante ufficiale “Entra con CIE”.

3.10. Eseguire l'autenticazione

Di seguito un esempio di gestione dell'evento TouchUpInside per eseguire il codice necessario per inizializzare e presentare la WebView di autenticazione.

La classe chiamante dovrà essere conforme al protocollo CieIdDelegate come mostrato nell'esempio.

**class ExampleViewController**: UIViewController, CieIdDelegate {
...
}

L'utente potrà navigare nella webView mostrata che lo indirizzerà sull'app CieID dove potrà eseguire l'autenticazione con la Carta di Identità Elettronica, al termine verrà nuovamente reindirizzato sull'app chiamante in cui potrà dare il consenso alla condivisione delle informazioni personali e portare al termine l'autenticazione.

Al termine dell'autenticazione verrà chiamato il delegato CieIDAuthenticationClosedWithSuccess. La chiamata di questo delegato avviene nella classe CieIDWKWebViewController. Potrebbe rendersi necessario posticipare la chiamata di questo delegato in base alla logica di autenticazione del Service Provider.

3.11. Gestione eventi

Il protocollo impone la gestione dei seguenti eventi mediante delegati

**func** CieIDAuthenticationClosedWithSuccess() {
                        print("Authentication closed with SUCCESS")

}
**func** CieIDAuthenticationCanceled() {
                        print("L'utente ha annullato l'operazione")

}
**func** CieIDAuthenticationClosedWithError(errorMessage: String) {
                        print("ERROR MESSAGE: *\\(*\ errorMessage\ *)*")

}