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
Utilizzare i nuovi piani dedicati di Azure Container Apps
Sfruttare al massimo i topic space di Event Grid MQTT
Utilizzare gli snapshot con Azure File shares
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Generare token per autenicarsi sulle API di GitHub
Potenziare Azure AI Search con la ricerca vettoriale
Usare ASP.NET Core dev tunnels per testare le applicazioni su internet
Effettuare il pull di git LFS in un workflow di GitHub
Gestire domini wildcard in Azure Container Apps
Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Utilizzare Model as a Service su Microsoft Azure
I più letti di oggi
- Autenticarsi in modo sicuro su Azure tramite GitHub Actions
- Miglioramenti nelle performance di Angular 16
- Utilizzare .NET Core con le Azure Function
- Sfruttare al massimo i topic space di Event Grid MQTT
- Recuperare informazioni sul browser con Angular CDK
- Miglioramenti agli screen reader e al contrasto in Angular
- Effettuare il binding di date in Blazor