Dela via


Anpassad autentisering i Azure Static Web Apps

Azure Static Web Apps tillhandahåller hanterad autentisering som använder providerregistreringar som hanteras av Azure. Om du vill göra registreringen mer flexibel kan du åsidosätta standardinställningarna med en anpassad registrering.

Kommentar

Anpassad autentisering är endast tillgänglig i Azure Static Web Apps Standard-planen.

Konfigurera en anpassad identitetsprovider

Anpassade identitetsprovidrar konfigureras i avsnittet i auth konfigurationsfilen.

För att undvika att placera hemligheter i källkontrollen tittar konfigurationen på programinställningar för ett matchande namn i konfigurationsfilen. Du kan också välja att lagra dina hemligheter i Azure Key Vault.

Börja med att skapa följande programinställningar för att skapa registreringen:

Namn Värde
AZURE_CLIENT_ID Program-ID :t (klient) för Microsoft Entra-appregistreringen.
"AZURE_CLIENT_SECRET_APP_SETTING_NAME Namnet på den programinställning som innehåller klienthemligheten för Microsoft Entra-appregistreringen.

Använd sedan följande exempel för att konfigurera providern i konfigurationsfilen.

Microsoft Entra-leverantörer är tillgängliga i två olika versioner. Version 1 definierar uttryckligen userDetailsClaim, vilket gör att nyttolasten kan returnera användarinformation. Version 2 returnerar däremot användarinformation som standard och anges av v2.0 i openIdIssuer URL:en.

Microsoft Entra version 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"
        }
      }
    }
  }
}

Ersätt med ditt Klient-ID för <TENANT_ID> Microsoft Entra.

Microsoft Entra version 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"
        }
      }
    }
  }
}

Ersätt med ditt Klient-ID för <TENANT_ID> Microsoft Entra.

Mer information om hur du konfigurerar Microsoft Entra-ID finns i dokumentationen för App Service-autentisering/auktorisering om hur du använder en befintlig registrering.

Information om hur du konfigurerar vilka konton som kan logga in finns i Ändra konton som stöds av ett program och Begränsa din Microsoft Entra-app till en uppsättning användare i en Microsoft Entra-klientorganisation.

Kommentar

Även om konfigurationsavsnittet för Microsoft Entra-ID är azureActiveDirectory, aliaserar plattformen detta till aad i URL:en för inloggning, utloggning och rensning av användarinformation. Mer information finns i avsnittet om autentisering och auktorisering .

Anpassat certifikat

Använd följande steg för att lägga till ett anpassat certifikat i din Microsoft Entra ID-appregistrering.

  1. Om det inte redan är det laddar du upp certifikatet till ett Microsoft Key Vault.

  2. Lägg till en hanterad identitet i din statiska webbapp.

    För användartilldelade hanterade identiteter anger du keyVaultReferenceIdentity egenskapen för ditt statiska platsobjekt till den användartilldelade hanterade identiteten resourceId .

    Hoppa över det här steget om din hanterade identitet är systemtilldelad.

  3. Bevilja den hanterade identiteten följande åtkomstprinciper:

    • Hemligheter: Hämta/lista
    • Certifikat: Hämta/lista
  4. Uppdatera autentiseringskonfigurationsavsnittet i konfigurationsavsnittet azureActiveDirectory med ett clientSecretCertificateKeyVaultReference värde enligt följande exempel:

    {
      "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": "*"
            }
          }
        }
      }
    }
    

    Se till att ersätta dina värden i för platshållarna omgivna av <>.

    I den hemliga URI:n anger du nyckelvalvets namn och certifikatnamn. Om du vill fästa på en version inkluderar du certifikatversionen, annars utelämnar du versionen så att körningen kan välja den senaste versionen av certifikatet.

    Ange clientSecretCertificateThumbprint lika med för att * alltid hämta den senaste versionen av certifikatens tumavtryck.

Återanrop till autentisering

Identitetsprovidrar kräver en omdirigerings-URL för att slutföra inloggnings- eller utloggningsbegäran. De flesta leverantörer kräver att du lägger till url:erna för återanrop i en tillåtna lista. Följande slutpunkter är tillgängliga som omdirigeringsmål.

Typ URL-mönster
Inloggning https://<YOUR_SITE>/.auth/login/<PROVIDER_NAME_IN_CONFIG>/callback
Utloggning https://<YOUR_SITE>/.auth/logout/<PROVIDER_NAME_IN_CONFIG>/callback

Om du använder Microsoft Entra-ID använder aad du som värde för <PROVIDER_NAME_IN_CONFIG> platshållaren.

Kommentar

Dessa URL:er tillhandahålls av Azure Static Web Apps för att ta emot svaret från autentiseringsprovidern. Du behöver inte skapa sidor på dessa vägar.

Inloggning, utloggning och användarinformation

Om du vill använda en anpassad identitetsprovider använder du följande URL-mönster.

Åtgärd Mönster
Inloggning /.auth/login/<PROVIDER_NAME_IN_CONFIG>
Utloggning /.auth/logout
Användarinformation /.auth/me
Rensa användarinformation /.auth/purge/<PROVIDER_NAME_IN_CONFIG>

Om du använder Microsoft Entra-ID använder aad du som värde för <PROVIDER_NAME_IN_CONFIG> platshållaren.

Hantera roller

Varje användare som har åtkomst till en statisk webbapp tillhör en eller flera roller. Det finns två inbyggda roller som användarna kan tillhöra:

  • anonym: Alla användare tillhör automatiskt den anonyma rollen.
  • autentiserad: Alla användare som är inloggade tillhör den autentiserade rollen.

Utöver de inbyggda rollerna kan du tilldela anpassade roller till användare och referera till dem i filen staticwebapp.config.json .

Lägga till en användare i en roll

Om du vill lägga till en användare i en roll genererar du inbjudningar som gör att du kan associera användare till specifika roller. Roller definieras och underhålls i filen staticwebapp.config.json .

Skapa en inbjudan

Inbjudningar är specifika för enskilda auktoriseringsleverantörer, så tänk på behoven i din app när du väljer vilka leverantörer som ska stödjas. Vissa leverantörer exponerar en användares e-postadress, medan andra endast anger webbplatsens användarnamn.

Auktoriseringsprovider Exponerar
Microsoft Entra ID e-postadress
GitHub användarnamn
X användarnamn

Använd följande steg för att skapa en inbjudan.

  1. Gå till en Static Web Apps-resurs i Azure-portalen.
  2. Under Inställningar väljer du Rollhantering.
  3. Välj Bjud in.
  4. Välj en auktoriseringsprovider i listan med alternativ.
  5. Lägg till mottagarens användarnamn eller e-postadress i rutan Inbjuden information .
    • För GitHub och X anger du användarnamnet. Ange mottagarens e-postadress för alla andra.
  6. Välj domänen för din statiska webbplats i den nedrullningsbara menyn Domän .
    • Domänen som du väljer är den domän som visas i inbjudan. Om du har en anpassad domän som är associerad med din webbplats väljer du den anpassade domänen.
  7. Lägg till en kommaavgränsad lista med rollnamn i rutan Roll .
  8. Ange det maximala antalet timmar som du vill att inbjudan ska vara giltig.
    • Den maximala möjliga gränsen är 168 timmar, vilket är sju dagar.
  9. Välj Generera.
  10. Kopiera länken från rutan Bjud in länk .
  11. Skicka inbjudan via e-post till den användare som du beviljar åtkomst till.

När användaren väljer länken i inbjudan uppmanas de att logga in med sitt motsvarande konto. När användaren har loggat in associeras den med de valda rollerna.

Varning

Kontrollera att routningsreglerna inte är i konflikt med dina valda autentiseringsprovidrar. Om du blockerar en provider med en routningsregel kan användarna inte acceptera inbjudningar.

Uppdatera rolltilldelningar

  1. Gå till en Static Web Apps-resurs i Azure-portalen.
  2. Under Inställningar väljer du Rollhantering.
  3. Välj användaren i listan.
  4. Redigera listan över roller i rutan Roll .
  5. Välj Uppdatera.

Ta bort användare

  1. Gå till en Static Web Apps-resurs i Azure-portalen.
  2. Under Inställningar väljer du Rollhantering.
  3. Leta upp användaren i listan.
  4. Markera kryssrutan på användarens rad.
  5. Välj Ta bort.

Tänk på följande när du tar bort en användare:

  • Om du tar bort en användare ogiltigförklaras deras behörigheter.
  • Det kan ta några minuter att sprida världen över.
  • Om användaren läggs till i appen igen ändras denuserId.

Nästa steg