I Mobile App Services supportano l'autenticazione federata tramite molteplici provider, quali Twitter, Facebook, Microsoft Account, Google e Azure Active Directory. L'SDK (sia lato client che server) permette di interfacciarsi tramite questi provider con pochissimi passi, e senza che siamo costretti a conoscere i dettagli implementativi del protocollo OAuth. Tutto ciò che dobbiamo fare è seguire i passaggi descritti nella documentazione a questo indirizzo:
http://aspit.co/a7c
Le operazioni di autenticazione vengono gestite da un servizio chiamato Gateway che si occupa di acquisire un token dal provider selezionato e di utilizzarlo per rilasciare il cosiddetto Zumo-Token, utilizzato per autenticare le richieste provenienti dal device.
Uno dei compiti del Gateway è anche quello di mantenere un database con i token del provider esterno, così che questi possano essere utilizzati per impersonare l'utente in una chiamata. Immaginiamo per esempio di avere un utente autenticato con Twitter e di voler effettuare un tweet con il suo account. LinqToTwitter è una libreria che rende molto semplice questa operazione, ed è disponibile tramite NuGet:
install-package LinqToTwitter
Il primo passo è quello di interrogare il Gateway e recuperare il token originariamente emesso da Twitter, che contiene a sua volta l'AccessToken e l'AccessTokenSecret necessari per la chiamata.
var credentials = await ((MobileAppUser)this.User) .GetIdentityAsync<TwitterCredentials>();
A questo punto possiamo costruire un IAuthorizer, ossia il componente di LinqToTwitter che incapsula le credenziali utente e della nostra app:
var authorizer = new SingleUserAuthorizer() { CredentialStore = new SingleUserInMemoryCredentialStore() { ConsumerKey = "<put your ConsumerKey here>", ConsumerSecret = "<put your ConsumerSecret here>", AccessToken = credentials.AccessToken, AccessTokenSecret = credentials.AccessTokenSecret } };
Possiamo recuperare AccessToken e AccessTokenSecret dalle credenziali ottenute in precedenza, mentre ConsumerKey e ConsumerSecret sono le chiavi fornite da Twitter quando abbiamo registrato l'app presso il portale sviluppatori.
Grazie a questo componente, siamo finalmente pronti a inviare il tweet tramite il metodo TweetAsync di TwitterContext.
var context = new TwitterContext(authorizer); await context.TweetAsync("Hello World! This is a test tweet!");
Ovviamente, affinché questa operazione abbia successo, è necessario che l'app sia configurata con diritti di scrittura sulla timeline dell'utente.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ottenere il contenuto di una cartella FTP con la libreria FluentFTP
Migrare una service connection a workload identity federation in Azure DevOps
Migliora la resilienza delle applicazioni con .NET e Azure Container Apps
Utilizzare i primary constructor di C# per inizializzare le proprietà
Controllare gli accessi IP alle app con Azure Container Apps
C# 12: Cosa c'è di nuovo e interessante
Eseguire attività pianificate con Azure Container Jobs
Utilizzare i primary constructor in C#
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Elencare le container images installate in un cluster di Kubernetes
Utilizzare Tailwind CSS all'interno di React: primi componenti
Applicare il versioning ai nostri endpoint ASP.NET Core Minimal API