Ruolo di SPID per sviluppo App native iOS e Android

Buongiorno a tutti,
nell’ottica di offrire al cittadino servizi digitali su app native (iOS e Android) basate su servizi API Rest, vorrei capire come poter utilizzare al meglio SPID in questo contesto.

Supponiamo il seguente semplice scenario: si vuole costruire una app mobile che, dopo l’autenticazione del cittadino, fornisca l’elenco dei referti medici disponibili per il download. La funzione di business è implementata come un’API rest (ad esempio risponde a https://www.il-mio-sito.it/il_mio_codice_fiscale/referti) che risponde con l’elenco dei refeti solo se l’utente risulta autenticato su SPID.

Come possiamo implementare tale pattern?

OpenID consentirebbe l’implementazione ma da quanto sono riuscito a capire SPID è configurato come web sso e quindi l’unica possibilità ad oggi utilizzabile è l’uso di una webview. Esiste una configurazione senza OpenID? Quando prevedete di rilasciare OpenID su SPID?

Grazie,
Marco Boero.

Nei due repository https://github.com/italia/spid-ios-sdk e https://github.com/italia/spid-android-sdk è in corso del lavoro per implementare delle SDK che facilitano l’integrazione di SPID/SAML in app mobile (i repository sono al momento vuoti ma se guardate le Pull Request trovate del codice utile).
Per OpenID non esistono date previste di rilascio, e sicuramente faciliterebbe l’integrazione in un contesto mobile.
L’unica soluzione pulita per usare SPID/SAML in una app mobile richiede 1) l’apertura di una webview e 2) l’uso di un backend su cui mettere l’Assertion Consumer Service (può essere ad esempio https://www.il-mio-sito.it/samlsso). La sessione verrà quindi creata lato backend e poi propagata in qualche modo alla app.

@MarcoB se vuoi un esempio di flusso di login SPID basato su webview, qui trovi un esempio di flusso.

Essenzialmente devi aprire una webview che gestisce il flusso di autenticazione (tramite un backend di appoggio che interagisce con Shibboleth). Al completamento del login, all’interno dell’app devi intercettare l’url di destinazione che avevi passato all’inizio del flusso SPID. A quel punto Shibboleth passerà gli attributi dell’utente al backend sotto forma di header HTTP, e il backend potrà passarli all’app (tramite un API custom).

1 Mi Piace

Entro giugno 2018. Per il flusso saml, puoi utilizzare le sdk in rilascio o puoi seguire quello segnalato da @alranel e @cloudify che si riepiloga in:

  1. L’app chiama aprendo una webview uno IAM (Shibboleth o altro sistema SAML)
  2. Lo IAM, dopo aver effettuato l’iterazione con l’IDP scelto dall’utente, ritorna gli attributi sugli headers o altra modalità dello IAM utilizzato
  3. Gli attributi vengono passati all’app attraverso un token o altra soluzione simile (dipende dal sistema)
  4. Viene inizializzata la sessione per l’utente collegato

Per altre info chiedi pure.

Umberto Rosini
Agenzia per l’Italia Digitale

Avremmo l’esigenza di sviluppare e rilasciare un’app nativa per i cittadini entro l’estate 2018. Entro Giugno 2018 tutti gli Idp si saranno adeguati ad OpenID Connect? Gli ambienti di sviluppo quando saranno disponibili?

Grazie per il supporto,
Marco.

Ciao Marco,
dal momento che verranno rilasciate le linee guida entro poco tempo anche l’ambiente di sviluppo sarà allineato e sarà possibile testare OpenID Connect. L’obiettivo è entro l’estate 2018 la disponibilità presso gli IDP. Entro aprile la disponibilità sull’ambiente di test.

Umberto Rosini
Agenzia per l’Italia Digitale

1 Mi Piace

Ciao Umberto,

  • ci sono novità riguardanti le tempistiche di rilascio delle linee guida?
  • L’ambiente test sarà disponibile per gli sviluppatori di app o per gli IDP entro aprile?

Grazie e buon anno!
Enrico

Ciao @Enrico,
prevedo l’uscita delle linee guida in draft pubblica entro la prima quindicina di marzo e con la possibilità di portare contributi. Entro febbraio, per trasparenza, verranno rilasciate per consultazione e contributi con un gruppo ristretto di Service Provider.
Entro la prima quindicina di aprile sarà rilasciato OpenId Connect sull’ambiente di test.

Umberto Rosini
Agenzia per l’Italia Digitale

1 Mi Piace

Salve…scusate se mi intrometto sono uno sviluppatore junior iOS e stavo guardando link su github per poter scaricare la versione ios per poterla testare e vedere come funziona ma credo che non sia molto aggiornata come versione. Ho notato che è scritta in ObjC o sbaglio? c’è una versione più aggiornata?

grazie mille

riferimento al project che ho scaricate lo trovate qui

A che punto è l’ambiente di test? Si può già utilizzare?