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
Gestire il colore CSS con HWB
Anonimizzare i dati sensibili nei log di Azure Front Door
Recuperare App Service cancellati su Azure
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Utilizzare gRPC su App Service di Azure
Migliorare la sicurezza dei prompt con Azure AI Studio
Configurare e gestire sidecar container in Azure App Service
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Generare una User Delegation SAS in .NET per Azure Blob Storage
Creare una libreria CSS universale: Clip-path
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT