Implementare l'autenticazione e l'autorizzazione in App contenitore di Azure

Completato

App contenitore di Azure offre funzionalità di autenticazione e autorizzazione predefinite per proteggere l'app contenitore abilitata per l'ingresso esterno con codice minimo o senza codice. La funzionalità di autenticazione predefinita per App contenitore consente di risparmiare tempo e fatica fornendo l'autenticazione immediata con provider di identità federati, consentendo di concentrarsi sul resto dell'applicazione.

  • App contenitore di Azure offre l'accesso a vari provider di autenticazione predefiniti.
  • Le funzionalità di autenticazione predefinite non richiedono un linguaggio particolare, un SDK, competenze in materia di sicurezza o addirittura codice da scrivere.

Questa funzionalità deve essere usata solo con HTTPS. Assicurarsi che allowInsecure sia disabilitato nella configurazione in ingresso dell'app contenitore. È possibile configurare l'app contenitore per l'autenticazione con o senza limitare l'accesso al contenuto del sito e alle API.

  • Per limitare l'accesso alle app solo agli utenti autenticati, impostare l'impostazioneLimita accesso su Richiedi autenticazione.
  • Per eseguire l'autenticazione ma non limitare l'accesso, impostare l'impostazione Limita accesso su Consenti l'accesso non autenticato .

Provider di identità

App contenitore usa l'identità federata, in cui un provider di identità di terze parti gestisce le identità utente e il flusso di autenticazione. Per impostazione predefinita, sono disponibili i provider di identità seguenti:

Fornitore Endpoint di accesso Guida alle procedure
Piattaforma di identità Microsoft /.auth/login/aad Microsoft Identity Platform
Facebook /.auth/login/facebook Facebook
GitHub /.auth/login/github GitHub
Google /.auth/login/google Google
X /.auth/login/twitter X
Qualsiasi provider OpenID Connect /.auth/login/<providerName> Connessione OpenID

Quando si usa uno di questi provider, l'endpoint di accesso è disponibile per l'autenticazione utente e per la convalida dei token di autenticazione da parte del provider. È possibile fornire agli utenti un numero qualsiasi di queste opzioni di provider.

Architettura delle funzionalità

Il componente middleware di autenticazione e autorizzazione è una funzionalità della piattaforma che viene eseguita come contenitore sidecar in ogni replica dell'applicazione. Se è abilitato, ogni richiesta HTTP in ingresso passa attraverso il livello di sicurezza prima di essere gestita dall'applicazione.

Diagramma che mostra come le richieste vengono intercettate da un contenitore sidecar che interagisce con i fornitori di identità, prima di consentire il traffico verso il contenitore dell'app.

Il middleware della piattaforma gestisce diversi aspetti per l'app:

  • Autentica utenti e client con i provider di identità specificati
  • Gestisce la sessione autenticata
  • Inserisce le informazioni relative all'identità nelle intestazioni delle richieste HTTP

Il modulo di autenticazione e autorizzazione viene eseguito in un contenitore separato, isolato dal codice dell'applicazione. Poiché il contenitore di sicurezza non viene eseguito in-process, non è possibile eseguire l'integrazione diretta con framework di linguaggio specifici. Tuttavia, le informazioni pertinenti necessarie per l'app vengono fornite nelle intestazioni delle richieste.

Flusso di autenticazione

Il flusso di autenticazione è uguale per tutti i provider, ma varia a in base al fatto che si desideri o meno accedere con l'SDK del provider:

  • Senza provider SDK (flusso diretto dal server o flusso del server): L'applicazione delega l'accesso federato a Container Apps. La delega avviene in genere con le app del browser, che visualizzano la pagina di accesso del provider.

  • Con provider SDK (flusso diretto dal client o flusso client): l'applicazione consente agli utenti di accedere manualmente al provider e quindi invia il token di autenticazione ad App contenitore per la convalida. Questo approccio è tipico per le app senza browser che non visualizzano la pagina di accesso del provider. Un esempio è un'app per dispositivi mobili nativa che consente agli utenti di usare l'SDK del provider.