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.OAuthLato 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.aspxIn 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 -