italia / spid-dotnet-sdk

SPID authentication library for .NET
BSD 3-Clause "New" or "Revised" License
28 stars 15 forks source link

come si usano i metadati? #11

Closed faina09 closed 6 years ago

faina09 commented 6 years ago

il link in La chiave così esportata è un mero file di testo che contiene la chiave pubblica da copiare nell'apposito campo della pagina web di creazione del file di metadati. non funziona.

Inoltre non è per nulla chiaro come Il file XML contenente i metadati creato dalla suddetta pagina va poi utilizzato per registrare la nostra applicazione Web

tentativi di accesso alla pagina del SP danno l'errore: Formato richiesta non corretto

ncarandini commented 6 years ago

La pagina linkata non è più attiva, grazie della segnalazione, che riporterò a chi di dovere (la pagina non è gestita da questo progetto. Si trattava di una pagina che aiutava a compilare il file metadata (compliant alle Regole Tecniche SPID) di cui puoi trovare un esempio qui: http://spid-regole-tecniche.readthedocs.io/en/latest/regole-tecniche-idp.html#esempio-metadata-idp

Hai ragione sul fatto che non è chiaro, migliorerò la documentazione con notizie più specifiche. Il concetto comunque è quello di fornire tale documento ai vari Identity Providers (elenco ufficiale AgID). Se non ti accrediti, nessuna tua richiesta verrà riconosciuta.

Infine, non credo di aver ben capito a cosa ti riferisci per pagina del SP, intendi forse l'IP (Identity Provider)?

faina09 commented 6 years ago

Grazie della rapida risposta. Ho capito che è necessario fornire il metadata, ma COME lo si deve inviare? Speravo di capire tutto dal codice (leggere la documentazione non mi dà nessun aiuto, preferisco un esempio funzionante) e guardando la comunicazione tra Italia.Spid.AspNet.WebApp e https://spidposte.test.poste.it ma navigando http://localhost:62371/Home/SpidRequest?IdPName=https%3A%2F%2Fspidposte.test.poste.it il sito di poste.it si apre sull'errore di cui sopra: Formato richiesta non corretto probabilmente perché non fornisco il metadata corretto?

ncarandini commented 6 years ago

No, nel codice non c'è perché è una cosa che va fatta una tantum prima di poter fornire il servizio di autenticazione SPID. In pratica (semplificando) funziona così:

  1. Lei, come Service Provider (ovvero il sito che vuole offrire come sistema di identità digitale SPID) invia una tantum il file contenente i suoi metadati di Service Provider ad ogni Identity Provider di cui all'elenco AgID che le ho fornito. Che io sappia purtroppo tale invio non è ancora normato ed io l'ho fatto solo con Poste.it per il loro sito di prova. Nel mio caso l'ho semplicemente inviato per email al responsabile del servizio, che era presente durante l'hackathon.
  2. L'utente si collega al suo sito web e nella pagina di autenticazione sceglie l'Identity Provider col quale ha registrato la sua identità digitale.
  3. Il suo sito web, utilizzando la libreria SPID genera una richiesta di autenticazione che viene inviata all'Identity Provider e che produce un redirect della pagina dell'utente verso il sito di autenticazione dell'Identity Provider. In questo momento l'utente immette i sui dati (tipicamente nome utente e password) all'Identity Provider, senza che il suo sito web ne possa venire a conoscenza.
  4. L'Identity Provider ritorna al suo sito il risultato dell'autenticazione, con i dati dell'utente quali Nominativo, Codice fiscale, ecc. ma ovviamente senza il nome utente e la password, nel caso l'autenticazione sia andata a buon fine, o un errore di autenticazione fallita.
  5. se tutto è andato bene, il suo sito può utilizzare uno dei meccanismi classici (tipicamente un cookie di sessione) per far si che l'utente continui l'uso del suo sito web in qualità di utente autenticato.

Come detto, ora mi informo di come si fa per tutti gli Identity Provider e lo inserisco nella documentazione.

alranel commented 6 years ago

Tutte le indicazioni su come diventare Service Provider sono in questa pagina: https://www.spid.gov.it/come-diventare-fornitore-di-servizi-pubblici-e-privati-con-spid (ci pensa AgID a distribuire agli Identity Provider i metadati dei Service Provider)

Per testare la propria implementazione, invece, si può usare l'ambiente di test SPID disponibile all'indirizzo https://idp.spid.gov.it:8080/ oppure https://github.com/italia/spid-testenv

ncarandini commented 6 years ago

Chiedo venia per la mia ignoranza in materia di messa in produzione di un servizio che utilizza SPID, non avendolo mai fatto. Direi che la pagina linkata da @alexrj spiega tutto, ed ho conseguentemente aggiornato il Readme, per cui chiudo l'issue.

faina09 commented 6 years ago

grazie a tutti, su un PC Windows10 ho usato il codice qui disponibile per realizzare il mio prototipo e l'implementazione di @alexrj per Docker di un "Identity Provider da far girare in locale o su un proprio server" utile per testare la propria integrazione con SPID senza avere a disposizione identità SPID reali.

ncarandini commented 6 years ago

Ottimo, se hai altre necessità non esitare ad aprire una nuova issue ;-)