Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come personalizzare l'API e le versioni di runtime dell'autenticazione e dell'autorizzazione predefinite nel servizio app.
Esistono due versioni dell'API di gestione per l'autenticazione del servizio app. La versione V2 è necessaria per l'esperienza di autenticazione nel portale di Azure. Un'app che usa già l'API V1 può eseguire l'aggiornamento alla versione V2 dopo aver apportato alcune modifiche. In particolare, la configurazione dei segreti deve essere spostata nelle impostazioni dell'applicazione slot-sticky. È possibile spostare automaticamente la configurazione dei segreti dalla sezione Autenticazione dell'app nel portale.
Aggiornare la versione della configurazione
Avviso
La migrazione alla versione 2 disabilita la gestione della funzionalità di autenticazione/autorizzazione del servizio app per l'applicazione tramite alcuni client, ad esempio l'esperienza esistente nel portale di Azure, nell'interfaccia della riga di comando di Azure e in Azure PowerShell. Questa migrazione non può essere annullata.
L'API V2 non supporta la creazione o la modifica di un account Microsoft come provider distinto come V1. Usa invece la piattaforma di identità Microsoft Identity Platform convergente per consentire agli utenti di accedere con account Microsoft Entra e personali Microsoft. Quando si passa all'API V2, la configurazione di Microsoft Entra V1 viene usata per configurare il provider di Microsoft Identity Platform. Il provider di account Microsoft V1 viene portato avanti nel processo di migrazione e continua a funzionare come di consueto, ma è consigliabile passare al modello Microsoft Identity Platform più recente. Per altre informazioni, vedere Passare una configurazione a un provider Microsoft Entra.
Il processo di migrazione automatizzata sposta i segreti del provider nelle impostazioni dell'applicazione e quindi converte il resto della configurazione nel nuovo formato. Per usare la migrazione automatica:
- Passare all'app nel portale e selezionare Impostazioni>Autenticazione nel riquadro sinistro.
- Se l'app è configurata con il modello V1, viene visualizzato un pulsante Aggiorna .
- Selezionare il pulsante Aggiorna. Esaminare la descrizione nel prompt di conferma. Se si è pronti per eseguire la migrazione, selezionare Aggiorna nel prompt.
Gestione manuale della migrazione
La procedura seguente consente di eseguire manualmente la migrazione di un'applicazione all'API V2 se non si vuole usare la versione automatica descritta in precedenza.
Spostare i segreti nelle impostazioni dell'applicazione
Per spostare i segreti del provider di identità nelle impostazioni dell'applicazione, completare questi passaggi.
Ottenere la configurazione esistente usando l'API V1:
az webapp auth show -g <group_name> -n <app_name>Nel payload JSON risultante prendere nota del valore del segreto usato per ogni provider configurato:
- Microsoft Entra:
clientSecret - Google:
googleClientSecret - Facebook:
facebookAppSecret - X:
twitterConsumerSecret - Account Microsoft:
microsoftAccountClientSecret
Importante
I valori dei segreti sono credenziali di sicurezza importanti e devono essere gestiti con attenzione. Non condividere questi valori o renderli persistenti in un computer locale.
- Microsoft Entra:
Creare le impostazioni dell'applicazione slot-sticky per ogni valore del segreto. È possibile scegliere il nome di ogni impostazione dell'applicazione. Il valore deve corrispondere a quello ottenuto nel passaggio precedente o fare riferimento a un segreto di Azure Key Vault creato con tale valore.
Per creare l'impostazione, è possibile usare il portale di Azure o eseguire una variante del comando seguente per ogni provider:
# For web apps, Google example az webapp config appsettings set -g <group_name> -n <app_name> --slot-settings GOOGLE_PROVIDER_AUTHENTICATION_SECRET=<value_from_previous_step> # For Azure Functions, X example az functionapp config appsettings set -g <group_name> -n <app_name> --slot-settings TWITTER_PROVIDER_AUTHENTICATION_SECRET=<value_from_previous_step>Nota
Le impostazioni dell'applicazione per questa configurazione devono essere contrassegnate come slot-sticky, il che significa che non si spostano tra ambienti durante un'operazione di scambio di slot. Questa configurazione è necessaria perché la configurazione di autenticazione è associata all'ambiente.
Creare un nuovo file JSON denominato
authsettings.json. Prendere l'output ricevuto in precedenza e rimuovere ogni valore segreto da esso. Aggiungere l'output rimanente al file, assicurandosi che non siano inclusi segreti. In alcuni casi, la configurazione potrebbe contenere matrici che contengono stringhe vuote. Assicurarsi chemicrosoftAccountOAuthScopesnon lo faccia. In caso affermativo, modificare il valore innull.Aggiungere una proprietà a
authsettings.jsonche punti al nome dell'impostazione dell'applicazione creato in precedenza per ogni provider:- Microsoft Entra:
clientSecretSettingName - Google:
googleClientSecretSettingName - Facebook:
facebookAppSecretSettingName - X:
twitterConsumerSecretSettingName - Account Microsoft:
microsoftAccountClientSecretSettingName
Un file di impostazioni dopo questa operazione potrebbe essere simile al seguente, in questo caso configurato solo per Microsoft Entra ID:
{ "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myresourcegroup/providers/Microsoft.Web/sites/mywebapp/config/authsettings", "name": "authsettings", "type": "Microsoft.Web/sites/config", "location": "Central US", "properties": { "enabled": true, "runtimeVersion": "~1", "unauthenticatedClientAction": "AllowAnonymous", "tokenStoreEnabled": true, "allowedExternalRedirectUrls": null, "defaultProvider": "AzureActiveDirectory", "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444", "clientSecret": "", "clientSecretSettingName": "MICROSOFT_IDENTITY_AUTHENTICATION_SECRET", "clientSecretCertificateThumbprint": null, "issuer": "https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/", "allowedAudiences": [ "https://mywebapp.azurewebsites.net" ], "additionalLoginParams": null, "isAadAutoProvisioned": true, "aadClaimsAuthorization": null, "googleClientId": null, "googleClientSecret": null, "googleClientSecretSettingName": null, "googleOAuthScopes": null, "facebookAppId": null, "facebookAppSecret": null, "facebookAppSecretSettingName": null, "facebookOAuthScopes": null, "gitHubClientId": null, "gitHubClientSecret": null, "gitHubClientSecretSettingName": null, "gitHubOAuthScopes": null, "twitterConsumerKey": null, "twitterConsumerSecret": null, "twitterConsumerSecretSettingName": null, "microsoftAccountClientId": null, "microsoftAccountClientSecret": null, "microsoftAccountClientSecretSettingName": null, "microsoftAccountOAuthScopes": null, "isAuthFromFile": "false" } }- Microsoft Entra:
Inviare questo file come nuova configurazione di autenticazione/autorizzazione per l'app:
az rest --method PUT --url "/subscriptions/<subscription_id>/resourceGroups/<group_name>/providers/Microsoft.Web/sites/<app_name>/config/authsettings?api-version=2020-06-01" --body @./authsettings.jsonVerificare che l'app funzioni ancora come previsto dopo l'invio del file.
Eliminare il file usato nei passaggi precedenti.
Ora hai migrato l'app per conservare i segreti del fornitore di identità come impostazioni dell'applicazione.
Passare a una configurazione di un provider Microsoft Entra
Se la configurazione esistente contiene un provider di account Microsoft e non contiene un provider Microsoft Entra, è possibile modificare la configurazione con il provider Microsoft Entra e quindi eseguire la migrazione:
- Passare a Registrazioni delle app nel portale di Azure e trovare la registrazione associata al fornitore dell'account Microsoft. Potrebbe trovarsi sotto l'intestazione Applicazioni di proprietà .
- Passare alla pagina Autenticazione (anteprima) per la registrazione. In URI di reindirizzamento dovrebbe essere visualizzata una voce che termina con
/.auth/login/microsoftaccount/callback. Copiare l'URI. - Aggiungere un nuovo URI corrispondente a quello appena copiato, ma terminarlo con
/.auth/login/aad/callback. Questo URI consente alla registrazione di essere utilizzata dalla configurazione di autenticazione/autorizzazione dell'App Service. - Vai all'app nel portale. Selezionare Impostazioni>Autenticazione.
- Raccogliere la configurazione per il provider di account Microsoft.
- Configurare il provider Microsoft Entra usando la modalità di gestione avanzata , specificando l'ID client e i valori dei segreti client raccolti nel passaggio precedente. Per l'URL dell'autorità di certificazione, usare
<authentication-endpoint>/<tenant-id>/v2.0. Sostituire<authentication-endpoint>con l'endpoint di autenticazione per l'ambiente cloud (ad esempio, "https://login.microsoftonline.com"" per l'ID Microsoft Entra globale). Sostituire<tenant-id>con il proprio ID Directory (tenant). - Dopo aver salvato la configurazione, testare il flusso di accesso passando nel browser all'endpoint
/.auth/login/aadnel sito e completando il flusso di accesso. - A questo punto, hai copiato con successo la configurazione, ma rimane la configurazione del provider di account Microsoft esistente. Prima di rimuoverlo, assicurarsi che tutte le parti dell'app facciano riferimento al provider Microsoft Entra tramite i collegamenti di accesso e così via. Verificare che tutte le parti dell'app funzionino come previsto.
- Dopo aver verificato che tutto funzioni con il provider Microsoft Entra, è possibile rimuovere la configurazione del provider di account Microsoft.
Avviso
È possibile convergere le due registrazioni modificando i tipi di account supportati per la registrazione dell'app Microsoft Entra. Tuttavia, questa configurazione forza una nuova richiesta di consenso per gli utenti dell'account Microsoft e le attestazioni di identità degli utenti potrebbero essere diverse nella struttura, sub con cambiamenti significativi nei valori, perché viene usato un nuovo ID app. Questo approccio non è consigliato a meno che non lo si capisca a fondo. È invece necessario attendere il supporto per le due registrazioni nella superficie dell'API V2.
Passare alla versione 2
Dopo aver completato i passaggi precedenti, passare all'app nel portale di Azure. Selezionare la sezione Autenticazione (anteprima).
In alternativa, è possibile effettuare una richiesta PUT sulla risorsa config/authsettingsv2 all'interno della risorsa del sito. Lo schema per il payload è uguale a quello acquisito nella configurazione basata su file.
Aggiungere l'app a una versione specifica del runtime di autenticazione
Quando si abilita l'autenticazione/autorizzazione, il middleware della piattaforma viene inserito nella pipeline di richieste HTTP, come descritto nella panoramica delle funzionalità. Questo middleware della piattaforma viene aggiornato periodicamente con nuove funzionalità e miglioramenti nell'ambito degli aggiornamenti della piattaforma di routine. Per impostazione predefinita, l'app Web o per le funzioni viene eseguita nella versione più recente di questo middleware della piattaforma. Questi aggiornamenti automatici sono sempre compatibili con le versioni precedenti. Tuttavia, nel raro caso in cui questo aggiornamento automatico introduce un problema di runtime per l'app Web o per le funzioni, è possibile eseguire temporaneamente il rollback alla versione del middleware precedente. Questa sezione illustra come aggiungere temporaneamente un'app a una versione specifica del middleware di autenticazione.
Aggiornamenti di versione automatici e manuali
È possibile aggiungere l'app a una versione specifica del middleware della piattaforma configurando un'impostazione runtimeVersion per l'app. L'app viene sempre eseguita nella versione più recente, a meno che non si scelga di aggiungerla in modo esplicito a una versione specifica. Sono supportate alcune versioni alla volta. Se fissi una versione non valida che non è più supportata, l'app utilizza la versione più recente. Per eseguire sempre la versione più recente, impostare runtimeVersion su ~1.
Visualizzare e aggiornare la versione corrente del runtime
È possibile modificare la versione del runtime usata dall'app. La nuova versione del runtime dovrebbe essere applicata dopo il riavvio dell'app.
Visualizzare la versione corrente del runtime
È possibile visualizzare la versione corrente del middleware di autenticazione della piattaforma usando l'interfaccia della riga di comando di Azure o tramite uno degli endpoint HTTP predefiniti della versione nell'app.
Dall'interfaccia della riga di comando di Azure
Usando l'interfaccia della riga di comando di Azure, visualizzare la versione attuale del software intermedio con il comando az webapp auth show.
az webapp auth show --name <my_app_name> \
--resource-group <my_resource_group>
In questo codice sostituire <my_app_name> con il nome dell'app. Sostituire <my_resource_group> con il nome del gruppo di risorse per l'app.
Vedrai il campo runtimeVersion nell'output CLI. È simile all'output di esempio seguente, che viene troncato per maggiore chiarezza:
{
"additionalLoginParams": null,
"allowedAudiences": null,
...
"runtimeVersion": "1.3.2",
...
}
Dall'endpoint della versione
È anche possibile raggiungere l'endpoint /.auth/version in un'app per visualizzare la versione del middleware corrente in cui è in esecuzione l'app. L'output sarà simile al seguente:
{
"version": "1.3.2"
}
Aggiornare la versione di runtime corrente
Con l'interfaccia della riga di comando di Azure è possibile aggiornare l'impostazione runtimeVersion in un'app usando il comando az webapp auth update :
az webapp auth update --name <my_app_name> \
--resource-group <my_resource_group> \
--runtime-version <version>
Sostituire <my_app_name> con il nome dell'app. Sostituire <my_resource_group> con il nome del gruppo di risorse per l'app. Sostituire <version> con una versione valida di 1.x runtime o usare ~1 per la versione più recente. Per determinare la versione da utilizzare per Funzioni di Azure, vedere Panoramica delle versioni di runtime di Funzioni di Azure.
È possibile eseguire questo comando da Azure Cloud Shell selezionando Open Cloud Shell nell'esempio di codice precedente. È anche possibile usare l'interfaccia della riga di comando di Azure in locale per eseguire questo comando dopo aver eseguito az login per accedere.