Docs Italia beta

Documenti pubblici, digitali.

2. SDK Android

La versione del SDK per Android, **CieID-android-sdk**, è disponibile a questo link. É costituita da una libreria software, realizzata in codice nativo Android Kotlin, e integra una app di esempio che descrive le diverse modalitá di integrazione dello schema «Entra con CIE»:

2.1. 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”.

Inoltre, è necessario che i seguenti requisiti siano soddisfatti:

  • versione Android 6.0 (API level 23) o successive;
  • utilizzo di un dispositivo mobile dotato di tecnologia NFC;
  • disponibilità di una connessione internet

2.2. Configurazione

Dell'IdP sono messi a disposizione degli erogatori di servizi due ambienti: uno di preproduzione, per gli sviluppi applicativi e i test di federazione e l'altro di produzione, per il deploy in esercizio. Difatti, per l'impiego di un'app terza con uno dei flussi disponibili è necessaria una fase iniziale di configurazione, che dipende dal tipo di flusso adottato.

Entrambi i flussi vengono avviati tramite l'utilizzo di una Webview: é necessario caricare la URL del Service Provider che integra il pulsante «Entra con CIE» come mostrato nell'esempio:

*//inserire url service provider*
webView.loadUrl("URL del Service Provider")

Flusso con reindirizzamento

Nel caso di flusso con reindirizzamento, per far proseguire correttamente il flusso, è necessario selezionare l'applica- zione «CieID» a cui indirizzare le richieste di autenticazione. Ciò può essere fatto modificando i commenti dalle righe di interesse, come mostrato di seguito.

val appPackageName = "it.ipzs.cieid"
*//COLLAUDO*
*//val appPackageName = "it.ipzs.cieid.collaudo"*

Flusso integrato

Per quanto riguarda il flusso integrato, invece, la fase di autenticazione viene gestita dalla libreria software. In questo caso é necessario integrare il modulo «CieIDSdk».

L'SDK utilizza Gradle con strumento di build automatico. Per configurare correttamente il flusso, é necessario selezionare l'ambiente server dell'Identity Provider a cui indirizzare le richieste di autenticazione. Ció puó essere fatto modificando il file build.gradle modificando i commenti dalle righe di interesse, come mostrato di seguito:

2.3. Modalità di integrazione

L'SDK fornisce una app di esempio, con 2 activity, una per flusso, per facilitare al Service Provider l'integrazione all'interno della propria App. La gestione degli errori è demandata all'app integrante.

Integrazione del flusso con reindirizzamento

Per integrare nativamente le funzionalità dell'SDK é necessario, per prima cosa, intercettare la URL contenente il valore «/OpenApp» ed avviare l'App CieID integrando il codice seguente:

val intent = Intent()
**try** {

        intent.setClassName(appPackageName, className)
        *//settare la url caricata dalla webview su /OpenApp*
        intent.data = Uri.parse(url)
        intent.action = Intent.ACTION_VIEW
        startActivityForResult(intent, 0)
} **catch** (a : ActivityNotFoundException) {
        startActivity(

                Intent(

                        Intent.ACTION_VIEW,

                        Uri.parse("https://play.google.com/store/apps/details?id=$appPackageName")

                )

        )

)

**return true**

Una volta avviata correttamente l'App CieID, avviene l'autenticazione tramite la CIE, e al termine viene restituita una nuova URL da ricarica nella WebView precedente, come mostrato nell'esempio seguente:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {

        **super**.onActivityResult(requestCode, resultCode, data)
        val url = data?.getStringExtra(URL)

        webView.loadUrl(url)

}

Integrazione del flusso integrato

Per integrare le funzionalità dell'SDK si utilizzano i seguenti metodi:

*//Configurazione iniziale*

CieIDSdk.start(activity, callback)

*//Avvio utilizzo NFC*

CieIDSdk.startNFCListening(activity)

*//Abilitare o disabilitare i log, da disattivare in produzione*

CieIDSdk.enableLog = **true**

*//Bisogna settare la url caricata dalla pagina web dell' SP dalla
webview su /OpenApp*

CieIDSdk.setUrl(url.toString())

*//inserire il pin della CIE*

CieIDSdk.pin = input.text.toString()

*//Avviare NFC*

startNFC()

É necessario, inoltre, realizzare le interfacce di Callback implementando i seguenti metodi:

override fun onEvent(event: Event) {

*//evento*

}

override fun onError(e: Throwable) {

*//caso di errore*

}

override fun onSuccess(url: String) {

*//caso di successo con url della pagina da caricare*

}