italia / spid-sp-test

SAML2 SPID/CIE Service Provider validation tool
European Union Public License 1.2
39 stars 17 forks source link

Corretta gestione Authn #92

Closed mperu92 closed 3 years ago

mperu92 commented 3 years ago

Chiudo questo thread Apriamome un altro eventualmente per gestire gli altri argomenti emersi

Originally posted by @peppelinux in https://github.com/italia/spid-sp-test/issues/90#issuecomment-893865087

Ciao, essendo riusciti a farci prendere il metadata, adesso stiamo facendo le prove di Authn. Stiamo riscontrando delle problematiche con questo comando: --authn-url http://localhost:8000/spid/login/?idp=http://localhost:8088 --extra.

Questo il comando che lanciamo noi (abbiamo pubblicato online in un ambiente di stage) spid_sp_test --metadata-url https://sitosppubblico-spid.azurewebsites.net/spid/metadata/metadata.xml --authn-url https://sitosppubblico-spid.azurewebsites.net/home/login/?idp=https://sitosppubblico-spid.azurewebsites.net/ --extra -tr

Riceviamo come response:

spid_sp_test.exceptions.SAMLRequestNotFound:

A questo punto ci stiamo ponendo domande su come lanciare correttamente il comando. Ci siamo concentrati sui questa porzione dell'xml:

        <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://sitosppubblico-spid.azurewebsites.net/Home/TestLogOut"/>
        <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
        <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://sitosppubblico-spid.azurewebsites.net/Home/Test" index="0" isDefault="true"/>

All'interno della nostra app abbiamo creato gli endpoint istanziati nell'xml e anche quello per la login. ("/Home/Test/", "Home/TestLogOut/" e "/Home/Login/" )

Volevamo sapere a questo punto qual'è la correlazione tra i tre endpoint e qual'è la maniera corretta per utilizzarli in modo tale da effettuare correttamente il test sulla login con i giusti redirect/path

Inoltre, il parametro querystring idp è il riferimento al servizio a cui ci si appoggia? (es poste, tim...) Giusto per prova, ho provato a mettere appunto in idp, sia la url di login delle poste, sia proprio http://localhost:8088. Debuggando online, addirittura si evince che la chiamata entra correttamente nell'endpoint, è poi quando effettua la redirect a http://localhost:8088 o anche al sito poste da il messaggio: HTTP-REDIRECT without any SAMLRequest in. Is this SP behind a Proxy or is there any DiscoveryService enabled? {} A questo punto, se ho capito bene la logica credo che sia solo da capire bene dentro il nostro endpoint login da gestire bene, ho capito bene?

Grazie mille ancora per il supporto datoci!

peppelinux commented 3 years ago

La authn request URL dipende dal vostro SP e non dallesempio che vi ho fornito. Esempio, quello funziona con spid-django

Entityid di Idp di test è https://localhost:8080 e non 8088

Lauthn URL deve innescare all'interno del vostro SP la authrequest Saml2 per l'idp indicato. L'esempio che vi ho dato usa parametri URL GETa il vs spid Button potrebbe funzionare anche in post. Solo voi potete saperlo.

Usate una SDK spid in particolare?

mperu92 commented 3 years ago

Sì, utilizziamo SPID.AspNetCore.Authentication (la nostra è un'applicazione in aspnetcore). Si per la authnrequest-url infatti gli abbiamo messo direttamente la url di un nostro sito (non in produzione), che abbiamo la possibilità di debuggare online quindi vedere in "diretta" la chiamata che arriva al nostro endpoint, che in effetti arriva correttamente, spid-sp-test da errore 500 quando in effetti viene fatta la Challenge dal nostro endpoint ricevente all'idp che arriva. Volevo anche chiedere una cosa aggiuntiva sull'XML dei metadata: AssertionConsumerService e SingleLogoutService devono puntare esettamente alla url del sito che stiamo testando per l'authn (e successivamente quindi con la reale url di produzione)?

Grazie mille, Matteo

peppelinux commented 3 years ago

spid-sp-test riporta la response 500 come eccezione, testate a mano quella URL e senza JS, riscontrerete anche voi l'errore 500

Si gli URL devono corrispondere a quelli presenti sul metadata

mperu92 commented 3 years ago

perfetto, allora proseguiremo in questo senso magari chiudiamo questa issue e riapro se abbiamo necessità (edit: scusami non sapevo se potevo chiudere io)

grazie mille come sempre Matteo