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.
Med anpassad autentisering kan du också konfigurera anpassade leverantörer som stöder OpenID Connect. Med den här konfigurationen kan du registrera flera externa leverantörer.
Om du använder anpassade registreringar inaktiveras alla förkonfigurerade leverantörer.
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.
Om det inte redan är det laddar du upp certifikatet till ett Microsoft Key Vault.
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 identitetenresourceId
.Hoppa över det här steget om din hanterade identitet är systemtilldelad.
Bevilja den hanterade identiteten följande åtkomstprinciper:
- Hemligheter: Hämta/lista
- Certifikat: Hämta/lista
Uppdatera autentiseringskonfigurationsavsnittet i konfigurationsavsnittet
azureActiveDirectory
med ettclientSecretCertificateKeyVaultReference
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.
- Gå till en Static Web Apps-resurs i Azure-portalen.
- Under Inställningar väljer du Rollhantering.
- Välj Bjud in.
- Välj en auktoriseringsprovider i listan med alternativ.
- 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.
- 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.
- Lägg till en kommaavgränsad lista med rollnamn i rutan Roll .
- 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.
- Välj Generera.
- Kopiera länken från rutan Bjud in länk .
- 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
- Gå till en Static Web Apps-resurs i Azure-portalen.
- Under Inställningar väljer du Rollhantering.
- Välj användaren i listan.
- Redigera listan över roller i rutan Roll .
- Välj Uppdatera.
Ta bort användare
- Gå till en Static Web Apps-resurs i Azure-portalen.
- Under Inställningar väljer du Rollhantering.
- Leta upp användaren i listan.
- Markera kryssrutan på användarens rad.
- 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 den
userId
.