4 messaggi dal 15 marzo 2019
Buonasera ragazzi,

sono nuovo del forum e volevo chiedervi dei suggerimenti/chiarimenti su come impostare un progetto che ho in mente.

Quello che voglio realizzare, è un applicazione web(utilizzando ASP.NET Web Forms o ASP.NET MVC) e un app mobile (utilizzando Xamarin).

Entrambi i sistemi dovranno consentire l'accesso al sistema tramite due modalità: utenti registrati al sito e utenti facebook.

L'app dovrà dialogare con la web application tramite REST. L'esigenza è quella di avere alla ricezione della chiamata REST, l'identificato (username) dell'utente così da effettuare delle query sul DB.

Ora quello che vi chiedo è:
1. Usereste la Membership provider sul DB?
2. Come implementereste tutta la parte di autenticazione tenendo conto della doppia modalità di autenticazione e che siano due sorgenti ad accedere (Web e App)?
3. I REST che saranno protetti da autenticazione come trattereste la parte di autenticazione?

Grazie mille
333 messaggi dal 05 novembre 2012
Ciao,
Benvenuto...

ti consiglio di iniziare a guardare questo articolo Single Sign-On con IdentityServer in ASP.NET

Poi se hai domande chiedi pure :)

/Ciao

Alessio
4 messaggi dal 15 marzo 2019
Ciao Alessio e grazie per la risposta.

Conosco il concerto di Single Sign-On ma forse mi sono spiegato male o forse non capisco come incastrare tutte le componenti...

In pratica gli utenti che utilizzano l’app avranno una maschera di accesso. Tale maschera consentirà l’accesso al sistema sia per gli utenti normali che quelli di Facebook.

Una volta autenticati, l’app dovrà mostrare informazioni dell’utente e per fare questo verrà chiamato un servizio REST il quale sarà protetto.

Inoltre ho letto che per autenticare un utente su FB si dovrà dialogare con protocollo OAuth... Chi farà questo? La webapp o l’app?

Grazie
333 messaggi dal 05 novembre 2012
Ciao,

per come hai descritto il tuo scenario, o perlomeno per come l'ho capito io, ci sono

- WebApp
- App Mobile
- Servizio Rest

Essendoci più attori (principalmente due, WebApp e App) conviene implementare un unico endpoint che si occupa della parte di autenticazione e autorizzazione, una valida (non l'unica) opzione (dal mio punto di vista) può essere quella di utilizzare IdentityServer per fare questo.

Se poi un Single Sign-On ti sembra eccessivo puoi eventualmente usare ASP identity, e a riguardo puoi guardare qui e qui

Inoltre ho letto che per autenticare un utente su FB si dovrà dialogare con protocollo OAuth... Chi farà questo? La webapp o l’app?

L'endpoint che si occuppa della parte di autenticazione e autorizzazione

In ogni caso aspetta anche il parere di Moreno, l'autore degli articoli che ti ho segnalato...nell'argomento (e non solo) è molto preparato e competente...magari sà darti qualche dritta migliore

/Ciao
Modificato da scioCoder il 15 marzo 2019 18:40 -

Alessio
647 messaggi dal 13 novembre 2008
Contributi
Ciao, potrebbe essere che un meccanismo meno complesso sia sufficiente, leggendo le tue necessità io andrei sui token jwt, qui hai un articolo con esempio
https://www.aspitalia.com/script/1288/Autenticazione-JWT-Token-ASP.NET-Core-Web-API.aspx
333 messaggi dal 05 novembre 2012
scioCoder ha scritto:
Se poi un Single Sign-On ti sembra eccessivo puoi eventualmente usare ASP identity, e a riguardo puoi guardare qui e qui



Alessio
4 messaggi dal 15 marzo 2019
Grazie ad entrambi ho iniziato a leggere gli articoli e approfondire i due argomenti.

Nel frattempo attendo magari una risposta da Moreno...
11.511 messaggi dal 09 febbraio 2002
Contributi
Ciao,
se si tratta solo di un'applicazione web e di un'app, secondo me non vale la pena di implementare il Single Sign-On.
Semplicemente, nella tua applicazione web potresti usare ASP.NET Identity e avere un database di utenti locali. Per iniziare, dovresti creare una nuova applicazione ASP.NET da Visual Studio, selezionare MVC e scegliere "Account utente individuali" come vedi in questa immagine.
https://dotnetcodr.files.wordpress.com/2014/05/individual-user-accounts-option.png


Usereste la Membership provider sul DB?

No, la Membership è piuttosto vecchia, vai con ASP.NET Identity. Vale la pena di imparare a usarlo, anche perché questa competenza la potrai riusare quando inizierai a realizzare applicazioni ASP.NET Core.
Oltretutto, ASP.NET Identity supporta anche i social login. Dovresti riuscire a cavartela con poche righe di codice, come vedi fare qui:
https://stackoverflow.com/questions/43155792/identity-provider-asp-net-facebook-authentication-not-working


2. Come implementereste tutta la parte di autenticazione tenendo conto della doppia modalità di autenticazione e che siano due sorgenti ad accedere (Web e App)?


Per quanto riguarda l'accesso social da smartphone, non sono sicuro perché non l'ho mai fatto da Xamarin. Presumo che si possa usare un pacchetto tipo questo, che ti permette di ottenere un Access Token da Facebook.
https://github.com/Bigsby/Xamarin.Forms.OAuth

Lato web application, predisponi un controller Web API e una sua action sarà adibita alla ricezione di tale Access Token dall'app. Quest'action, una volta che ha ricevuto l'access token, farà una richiesta a facebook per ottenere l'identificativo dell'utente. A questo punto, se l'identificativo non esisteva nel tuo database di utenti locali, allora crei un utente in modo che in futuro tu possa associare altri dati a quell'utente. Questo è esattamente quello che succede quando ci si logga con Facebook dall'applicazione web.

Infine l'action restituirà un Token JWT all'app e così si rientra nel caso che ti hanno segnalato anche gli altri, cioè questo.
https://www.aspitalia.com/script/1288/Autenticazione-JWT-Token-ASP.NET-Core-Web-API.aspx

In quell'articolo ho fatto vedere l'action GetToken del TokenController che riceve username e password e restituisce un token JWT. Questo va bene se permetti l'autenticazione con user e password ma nel tuo caso, in aggiunta a questo, dovresti predisporre anche un'altra action a cui passerai l'Access Token che ti ha restituito Facebook, anziché username e password.

3. I REST che saranno protetti da autenticazione come trattereste la parte di autenticazione?

Il Token JWT che l'app ha ottenuto, lo restituirà alla Web API in tutte le sue successive richieste, così come descritto dallo stesso articolo.

ciao,
Moreno
Modificato da BrightSoul il 18 marzo 2019 07:54 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.