italia / spid-aspnetcore

AspNetCore Remote Authenticator for SPID
https://github.com/danielegiallonardo/spid-aspnetcore
MIT License
41 stars 11 forks source link

Servizio per il recupero del parametro IdPName tramite altri metodi #66

Closed PiemP closed 1 year ago

PiemP commented 1 year ago

Buongiorno,

sto integrando il codice di questa repository dentro un modulo specifico per un CMS .NET.

Ho notato che il parametro IdpName utilizzato per stabilire presso quale IdP effettuare l'autenticazione viene recuperato tramite QueryString. Mi piacerebbe fare una semplice integrazione del codice in cui si vuole dare la possibilità di personalizzare il sistema di recupero di questo parametro tramite un servizio adhoc che implementerà un interfaccia specifica inizializzato tramite il container di dependency injection. Di modo che sia possibile recuperare questo dato anche da richieste POST o altri metodi che non mi vengono in mente in questo momento.

Grazie.

danielegiallonardo commented 1 year ago

Salve, il parametro "idpName" viene preso da querystring perchè è lì che il TagHelper che genera il pulsante di accesso lo imposta. La libreria è pensata per facilitare l'utilizzo e l'integrazione dell'autenticazione con SPID, motivo per il quale sono stati fatti determinati assunti, tra cui, appunto, il fatto che venga utilizzato il metodo di default per generare il pulsante. Quale scenario presenta delle problematiche relative all'utilizzo di "idpName" in querystring?

danielegiallonardo commented 1 year ago

Inoltre sconsiglio "l'integrazione del codice del repository", meglio utilizzare il pacchetto nuget relativo, in questo modo sono facilitati anche i futuri aggiornamenti

PiemP commented 1 year ago

Quale scenario presenta delle problematiche relative all'utilizzo di "idpName" in querystring?

Il CMS in questione effettua una richiesta POST per inviare la richiesta di autenticazione tramite un provider "esterno" a un suo controller specifico per l'integrazione di sistemi di autenticazione differenti e quindi pensavo che potesse essere utile avere un modo per recuperare questo parametro da altri tipi di richieste oltre al GET. Al momento ho risolto tramite Javascript.

Inoltre sconsiglio "l'integrazione del codice del repository", meglio utilizzare il pacchetto nuget relativo, in questo modo sono facilitati anche i futuri aggiornamenti

mi rendo conto di questa problematica ma questo CMS utilizza un contesto di dependency injection che ha poco a che vedere con quello di un applicazione .net core MVC "standard" e il fatto che molte classi del client siano state limitate, giustamente, a livello di visibilità esterna alla libreria mi complica molto l'inserimento di questi elementi dentro il contesto di questo CMS.

Potrei aggiungere a questa libreria un metodo statico che estenda l'AuthenticationBuilder, specifico per il CMS su cui sto lavorando: ma non so che senso possa avere. Al momento non ho trovato molte alternative e la mia capacità tecnica non mi aiuta.

Il termine "integrazione" forse è un pò grosso...mi sono limitato a forkare la repo e ad applicare le modifiche necessarie per me.

danielegiallonardo commented 1 year ago

Chiudo dal momento che eventuali customizzazioni specifiche del comportamento della libreria ne altererebbero il suo scopo originario, che è quello di fornire una soluzione "chiavi in mano" per l'integrazione con SPID.