Autenticazione e autorizzazione in App per dispositivi mobili di AzureAuthentication and Authorization in Azure Mobile Apps

Informazioni sull’autenticazione / autorizzazione di servizio appWhat is App Service Authentication / Authorization?

Nota

Questo argomento verrà trasferito in un unico argomento Autenticazione/autorizzazione del servizio app , che illustra l'autenticazione e l'autorizzazione per app Web, app per dispositivi mobili e app per le API.This topic will be migrated to a consolidated App Service Authentication / Authorization topic, which covers Web, Mobile, and API Apps.

L'autenticazione / autorizzazione del servizio App è una funzionalità che consente all'applicazione di far accedere utenti senza necessità di apportare modifiche al codice nel back-end dell’app.App Service Authentication / Authorization is a feature which allows your application to log in users with no code changes required on the app backend. Fornisce un modo semplice per proteggere l'applicazione e utilizzare dati per-utente.It provides an easy way to protect your application and work with per-user data.

Il servizio App usa identità federate, in cui un provider di identità di terze parti ("IDP") archivia account e autentica utenti e l'applicazione utilizza questa identità anziché la propria.App Service uses federated identity, in which a 3rd-party identity provider ("IDP") stores accounts and authenticates users, and the application uses this identity instead of its own. Il servizio app supporta cinque provider di identità predefiniti: Azure Active Directory, Facebook, Google, Microsoft Account e Twitter.App Service supports five identity providers out of the box: Azure Active Directory, Facebook, Google, Microsoft Account, and Twitter. È anche possibile espandere il supporto per le app integrando un altro provider di identità o una soluzione di identità personalizzata.You can also expand this support for your apps by integrating another identity provider or your own custom identity solution.

L’app può utilizzare un numero qualsiasi di questi provider di identità, pertanto è possibile offrire agli utenti finali diverse opzioni di modalità di accesso.Your app can leverage any number of these identity providers, so you can provide your end users with options for how they login.

Se si desidera iniziare subito, vedere una delle esercitazioni seguenti:If you wish to get started right away, please see one of the following tutorials:

Funzionamento dell'autenticazioneHow authentication works

Per l'autenticazione tramite uno dei provider di identità, è necessario innanzitutto configurare il provider di identità per l'applicazione.In order to authenticate using one of the identity providers, you first need to configure the identity provider to know about your application. Il provider di identità quindi fornirà gli ID e i segreti da rimandare all'applicazione.The identity provider will then provide you with IDs and secrets that you provide back to the application. Questo completa la relazione di trust e consente al servizio App di convalidare l'identità fornita.This completes the trust relationship and allows App Service to validate identities provided to it.

Questi passaggi vengono descritti negli argomenti seguenti:These steps are detailed in the following topics:

Dopo che sono state effettuate tutte le configurazioni nel back-end, è possibile modificare il client per l’accesso.Once everything is configured on the backend, you can modify your client to log in. Di seguito, sono disponibili due approcci:There are two approaches here:

  • Utilizzo di una singola riga di codice che consentire all’SDK del client di App per dispositivi mobili di fare accedere gli utenti.Using a single line of code, let the Mobile Apps client SDK sign in users.
  • Utilizzo di un SDK pubblicato da un provider di identità specificata per stabilire l'identità e quindi accedere al servizio App.Leverage an SDK published by a given identity provider to establish identity and then gain access to App Service.

Suggerimento

La maggior parte delle applicazioni devono utilizzare un provider SDK per ottenere un'esperienza di accesso più nativa e sfruttare il supporto dell’aggiornamento e altri vantaggi specifici del provider.Most applications should use a provider SDK to get a more native-feeling login experience and to leverage refresh support and other provider-specific benefits.

Funzionamento dell'autenticazione senza un SDK del providerHow authentication without a provider SDK works

Se non si desidera configurare un SDK del provider, è possibile consentire ad App per dispositivi mobili di eseguire l'accesso per l'utente.If you do not wish to set up a provider SDK, you can allow Mobile Apps to perform the login for you. L'SDK client delle app per dispositivi mobili aprirà una visualizzazione web per il provider scelto e completerà l'accesso.The Mobile Apps client SDK will open a web view to the provider of your choosing and complete the sign in. In alcuni casi su blog e forum questo verrà definito "flusso server" o "flusso verso il server", perché il server gestisce l'accesso e l'SDK del client non riceve mai il token del provider.Occasionally on blogs and forums you will see this referred to as the "server flow" or "server-directed flow" since the server is managing the login, and the client SDK never receives the provider token.

Il codice necessario per avviare questo flusso è illustrato nell'esercitazione di autenticazione per ogni piattaforma.The code needed to start this flow is covered in the authentication tutorial for each platform. Alla fine del flusso, l’SDK del client dispone di un token del servizio App e il token viene associato automaticamente a tutte le richieste per il back-end.At the end of the flow, the client SDK has an App Service token, and the token is automatically attached to all requests to the backend.

Funzionamento dell'autenticazione con un SDK del providerHow authentication with a provider SDK works

L'uso di un SDK del provider consente all'esperienza di accesso di interagire più strettamente con la piattaforma del sistema operativo su cui è in esecuzione l'app.Working with a provider SDK allows the log-in experience to interact more tightly with the platform OS the app is running on. Inoltre, offre un token del provider e alcune informazioni utente sul client, che rende molto più semplice utilizzare le API Graph e personalizzare l'esperienza utente.This also gives you a provider token and some user information on the client, which makes it much easier to consume graph APIs and customize the user experience. In alcuni casi su blog e forum questo verrà definito come “flusso client" o "flusso verso il client" poichè il codice sul client gestisce l'accesso e il codice client ha accesso a un token del provider.Occasionally on blogs and forums you will see this referred to as the "client flow" or "client-directed flow" since code on the client is handling the login, and the client code has access to a provider token.

Dopo aver ottenuto un token del provider, deve essere inviato al servizio App per la convalida.Once a provider token is obtained, it needs to be sent to App Service for validation. Alla fine del flusso, l’SDK del client dispone di un token del servizio App e il token viene associato automaticamente a tutte le richieste per il back-end.At the end of the flow, the client SDK has an App Service token, and the token is automatically attached to all requests to the backend. Lo sviluppatore, se vuole, può anche memorizzare un riferimento al token del provider:The developer can also keep a reference to the provider token if they so choose.

Funzionamento dell’autorizzazioneHow authorization works

L'autenticazione / autorizzazione del servizio App espone diverse opzioni relative all’ Azione da intraprendere quando la richiesta non è autenticata.App Service Authentication / Authorization exposes several choices for Action to take when request is not authenticated. Prima che il codice ricevi una richiesta specifica, è possibile verificare il servizio App per vedere se la richiesta viene autenticata e se non, rifiutarla e tentare di richiedere all'utente di accedere prima di riprovare.Before your code receives a given request, you can have App Service check to see if the request is authenticated and if not, reject it and attempt to have the user log in before trying again.

Una possibilità consiste nel reindirizzare le richieste non autenticate a uno dei provider di identità.One option is to have unauthenticated requests redirect to one of the identity providers. In un browser web, questa operazione porterebbe effettivamente l'utente in una nuova pagina.In a web browser, this would actually take the user to a new page. Tuttavia, in questo modo il client per dispositivi mobili non può essere reindirizzato e le risposte non autenticate riceveranno una risposta HTTP 401 - Non autorizzato.However, your mobile client cannot be redirected in this way, and unauthenticated responses will receive an HTTP 401 Unauthorized response. Detto questo, la prima richiesta che il client esegue dovrebbe sempre essere diretta all'endpoint di accesso e successivamente sarà possibile effettuare chiamate a qualsiasi altra API.Given this, the first request your client makes should always be to the login endpoint, and then you can make calls to any other APIs. Se si tenta di chiamare un'altra API prima dell'accesso, il client riceverà un errore.If you attempt to call another API before logging in, your client will receive an error.

Se si desidera avere un controllo più granulare su quali endpoint richiedono l'autenticazione, è inoltre possibile selezionare "Nessuna azione (consentire richiesta)" per le richieste non autenticate.If you wish to have more granular control over which endpoints require authentication, you can also pick "No action (allow request)" for unauthenticated requests. In questo caso, tutte le decisioni relative all’autenticazione vengono rinviate al codice dell'applicazione.In this case, all authentication decisions are deferred to your application code. Ciò consente anche di consentire l'accesso a utenti specifici in base a regole di autorizzazione personalizzate.This also allows you to allow access to specific users based on custom authorization rules.

DocumentazioneDocumentation

Le esercitazioni seguenti illustrano come aggiungere l’autenticazione ai client mobili mediante il servizio app:The following tutorials show how to add authentication to your mobile clients using App Service:

Le esercitazioni seguenti illustrano come configurare il servizio App per sfruttare provider di autenticazione diversi:The following tutorials show how to configure App Service to leverage different authentication providers:

Se si desidera utilizzare un sistema di identità diverso da quelli qui forniti, è anche possibile sfruttare l’ Anteprima supporto per l'autenticazione personalizzata nell’SDK del server .NET.If you wish to use an identity system other than the ones provided here, you can also leverage the preview custom authentication support in the .NET server SDK.