Condividi tramite


Autenticazione personalizzata in App Web statiche di Azure

App Web statiche di Azure fornisce un'autenticazione gestita che usa le registrazioni dei provider gestite da Azure. Per consentire una maggiore flessibilità sulla registrazione, è possibile eseguire l'override delle impostazioni predefinite con una registrazione personalizzata.

  • L'autenticazione personalizzata consente anche di configurare provider personalizzati che supportano OpenID Connect. Questa configurazione consente la registrazione di più provider esterni.

  • L'uso di registrazioni personalizzate disabilita tutti i provider preconfigurati.

Nota

L'autenticazione personalizzata è disponibile solo nel piano Standard di App Web statiche di Azure.

Configurare un provider di identità personalizzato

I provider di identità personalizzati vengono configurati nella sezione auth del file di configurazione.

Per evitare di inserire segreti nel controllo del codice sorgente, la configurazione cerca nelle impostazioni dell'applicazione un nome corrispondente nel file di configurazione. È anche possibile scegliere di archiviare i segreti in Azure Key Vault.

Per creare la registrazione, iniziare creando le impostazioni dell'applicazione seguenti:

Nome dell'impostazione Valore
AZURE_CLIENT_ID ID applicazione (client) per la registrazione dell'app Microsoft Entra.
`AZURE_CLIENT_SECRET_APP_SETTING_NAME Nome dell'impostazione dell'applicazione che contiene il segreto client per la registrazione dell'app Microsoft Entra.

Usare quindi l'esempio seguente per configurare il provider nel file di configurazione.

I provider Microsoft Entra sono disponibili in due versioni diverse. La versione 1 definisce in modo esplicito l'oggetto userDetailsClaim, che consente al payload di restituire le informazioni dell'utente. La versione 2, invece, restituisce le informazioni dell'utente per impostazione predefinita ed è indicata con v2.0 nell'URL openIdIssuer.

Microsoft Entra versione 1

{
  "auth": {
    "identityProviders": {
      "azureActiveDirectory": {
        "userDetailsClaim": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name",
        "registration": {
          "openIdIssuer": "https://login.microsoftonline.com/<TENANT_ID>",
          "clientIdSettingName": "AZURE_CLIENT_ID",
          "clientSecretSettingName": "AZURE_CLIENT_SECRET_APP_SETTING_NAME"
        }
      }
    }
  }
}

Assicurarsi di sostituire <TENANT_ID> con l'ID tenant di Microsoft Entra.

Microsoft Entra versione 2

{
  "auth": {
    "identityProviders": {
      "azureActiveDirectory": {
        "registration": {
          "openIdIssuer": "https://login.microsoftonline.com/<TENANT_ID>/v2.0",
          "clientIdSettingName": "AZURE_CLIENT_ID",
          "clientSecretSettingName": "AZURE_CLIENT_SECRET_APP_SETTING_NAME"
        }
      }
    }
  }
}

Assicurarsi di sostituire <TENANT_ID> con l'ID tenant di Microsoft Entra.

Per altre informazioni su come configurare Microsoft Entra ID, vedere la documentazione relativa all'autenticazione/autorizzazione del servizio app sull'uso di una registrazione esistente.

Per configurare gli account che possono accedere, vedere Modificare gli account supportati da un'applicazione e Limitare l'app Microsoft Entra a un gruppo di utenti in un tenant di Microsoft Entra.

Nota

Sebbene la sezione di configurazione per Microsoft Entra ID sia azureActiveDirectory, la piattaforma ne associa l'alias a aad negli URL per l'accesso, la disconnessione e l'eliminazione delle informazioni dell'utente. Per altre informazioni, vedere la sezione Autenticazione e autorizzazione.

Certificato personalizzato

Seguire questa procedura per aggiungere un certificato personalizzato alla registrazione dell'app Microsoft Entra ID.

  1. Se questa operazione non è stata ancora eseguita, caricare il certificato in un Microsoft Key Vault.

  2. Aggiungere un'identità gestita nell'app Web statica.

    Per le identità gestite assegnate dall'utente, impostare la proprietà keyVaultReferenceIdentity nell'oggetto del sito statico sul valore resourceId dell'identità gestita assegnata dall'utente.

    Ignorare questo passaggio se l'identità gestita è assegnata dal sistema.

  3. Concedere all'identità gestita i criteri di accesso seguenti:

    • Segreti: Get/List
    • Certificati: Get/List
  4. Aggiornare la sezione di configurazione dell'autenticazione della sezione di configurazione azureActiveDirectory con un valore clientSecretCertificateKeyVaultReference, come illustrato nell'esempio seguente:

    {
      "auth": {
        "rolesSource": "/api/GetRoles",
        "identityProviders": {
          "azureActiveDirectory": {
            "userDetailsClaim": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
            "registration": {
              "openIdIssuer": "https://login.microsoftonline.com/common/v2.0",
              "clientIdSettingName": "AZURE_CLIENT_ID",
              "clientSecretCertificateKeyVaultReference": "@Microsoft.KeyVault(SecretUri=https://<KEY_VAULT_NAME>.azure.net/certificates/<CERTIFICATE_NAME>/<CERTIFICATE_VERSION_ID>)",
              "clientSecretCertificateThumbprint": "*"
            }
          }
        }
      }
    }
    

    Assicurarsi di sostituire i segnaposto racchiusi tra <> con i propri valori.

    Nell'URI del segreto specificare il nome dell'insieme di credenziali delle chiavi e il nome del certificato. Se si vuole aggiungere a una versione, includere la versione del certificato, altrimenti omettere la versione per consentire al runtime di selezionare la versione più recente del certificato.

    Impostare clientSecretCertificateThumbprint uguale a * per eseguire sempre il pull della versione più recente dell'identificazione personale dei certificati.

Callback di autenticazione

I provider di identità richiedono un URL di reindirizzamento per completare la richiesta di accesso o disconnessione. La maggior parte dei provider richiede l'aggiunta degli URL di callback a un elenco di elementi consentiti. Gli endpoint seguenti sono disponibili come destinazioni di reindirizzamento.

Type Modello URL
Account di accesso https://<YOUR_SITE>/.auth/login/<PROVIDER_NAME_IN_CONFIG>/callback
Disconnessione https://<YOUR_SITE>/.auth/logout/<PROVIDER_NAME_IN_CONFIG>/callback

Se si usa Microsoft Entra ID, usare aad come valore per il segnaposto <PROVIDER_NAME_IN_CONFIG>.

Nota

Questi URL vengono forniti da App Web statiche di Azure per ricevere la risposta dal provider di autenticazione; non è necessario creare pagine in queste route.

Accesso, disconnessione e dettagli utente

Per usare un provider di identità personalizzato, usare i modelli di URL seguenti.

Azione Modello
Account di accesso /.auth/login/<PROVIDER_NAME_IN_CONFIG>
Disconnessione /.auth/logout
Dettagli utente /.auth/me
Eliminazione dei dettagli utente /.auth/purge/<PROVIDER_NAME_IN_CONFIG>

Se si usa Microsoft Entra ID, usare aad come valore per il segnaposto <PROVIDER_NAME_IN_CONFIG>.

Gestire i ruoli

Ogni utente che accede a un'app Web statica appartiene a uno o più ruoli. Esistono due ruoli predefiniti a cui gli utenti possono appartenere:

  • anonimo: tutti gli utenti appartengono automaticamente al ruolo anonimo.
  • autenticato: tutti gli utenti connessi appartengono al ruolo autenticato.

Oltre ai ruoli predefiniti, è possibile assegnare ruoli personalizzati agli utenti e farvi riferimento nel file staticwebapp.config.json.

Aggiungere un utente a un ruolo

Per aggiungere un utente a un ruolo, si generano inviti che consentono di associare gli utenti a ruoli specifici. I ruoli vengono definiti e gestiti nel file staticwebapp.config.json.

Creazione di un invito

Gli inviti sono specifici dei singoli provider di autorizzazioni, quindi occorre valutare le esigenze dell'app quando si selezionano i provider da supportare. Alcuni provider espongono l'indirizzo di posta elettronica di un utente, mentre altri forniscono solo il nome utente del sito.

Provider di autorizzazione Elementi esposti
Microsoft Entra ID Indirizzo di posta elettronica
GitHub username
X username

Per creare un invito, seguire questa procedura.

  1. Nel portale di Azure passare a una risorsa di App Web statiche.
  2. In Impostazioni selezionare Gestione ruoli.
  3. Selezionare Invita.
  4. Selezionare un Provider di autorizzazione dall'elenco di opzioni.
  5. Aggiungere il nome utente o l'indirizzo di posta elettronica del destinatario nella casella Dettagli dell'invitato.
    • Per GitHub e X immettere il nome utente. Per tutti gli altri, immettere l'indirizzo di posta elettronica del destinatario.
  6. Selezionare il dominio del sito statico dal menu a discesa Dominio.
    • Il dominio selezionato è il dominio che verrà visualizzato nell'invito. Se al sito è associato un dominio personalizzato, scegliere il dominio personalizzato.
  7. Aggiungere un elenco delimitato da virgole di nomi di ruolo nella casella Ruolo.
  8. Immettere il numero massimo di ore di validità per l'invito.
    • Il limite massimo consentito è 168 ore, ovvero sette giorni.
  9. Selezionare Genera.
  10. Copiare il collegamento dalla casella Collegamento di invito.
  11. Inviare il collegamento di invito tramite posta elettronica all'utente a cui si vuole concedere l'accesso.

Quando l'utente seleziona il collegamento nell'invito, gli viene richiesto di accedere con l'account corrispondente. Una volta eseguito correttamente l'accesso, l'utente viene associato ai ruoli selezionati.

Attenzione

Assicurarsi che le regole di route non siano in conflitto con i provider di autenticazione selezionati. Il blocco di un provider con una regola di route impedisce agli utenti di accettare gli inviti.

Aggiornare le assegnazioni di ruolo

  1. Nel portale di Azure passare a una risorsa di App Web statiche.
  2. In Impostazioni selezionare Gestione ruoli.
  3. Selezionare l'utente nell'elenco.
  4. Modificare l'elenco dei ruoli nella casella Ruolo.
  5. Selezionare Aggiorna.

Rimuovi utente

  1. Nel portale di Azure passare a una risorsa di App Web statiche.
  2. In Impostazioni selezionare Gestione ruoli.
  3. Individuare l'utente nell'elenco.
  4. Selezionare la casella di controllo sulla riga dell'utente.
  5. Selezionare Elimina.

Quando si rimuove un utente, tenere presente quanto segue:

  • La rimozione di un utente invalida le autorizzazioni associate.
  • La propagazione in tutto il mondo potrebbe richiedere alcuni minuti.
  • Se l'utente viene aggiunto nuovamente all'app, il valore di userId verrà modificato.

Passaggi successivi