Dela via


Konfigurera din App Service- eller Azure Functions-app så att den använder Microsoft Entra-inloggning

Kommentar

Från och med den 1 juni 2024 kan nyligen skapade App Service-appar generera ett unikt standardvärdnamn som använder namngivningskonventionen <app-name>-<random-hash>.<region>.azurewebsites.net. Befintliga appnamn förblir oförändrade. Till exempel:

myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Mer information finns i Unikt standardvärdnamn för App Service-resurs.

Välj en annan autentiseringsprovider för att hoppa till den.

Den här artikeln visar hur du konfigurerar autentisering för Azure App Service eller Azure Functions så att din app loggar in användare med Microsofts identitetsplattform (Microsoft Entra) som autentiseringsprovider.

Välj en klient för ditt program och dess användare

Innan programmet kan logga in användare måste du registrera det i en arbetsstyrka eller extern klientorganisation. Om du gör din app tillgänglig för anställda eller företagsgäster registrerar du appen i en klientorganisation för arbetsstyrkan. Om din app är avsedd för konsumenter och företagskunder registrerar du den i en extern klientorganisation.

  1. Logga in på Azure Portal och gå till din app.

  2. Välj Inställningar>Autentisering på appens vänstra meny och välj sedan Lägg till identitetsprovider.

  3. På sidan Lägg till en identitetsprovider väljer du Microsoft som identitetsprovider för att logga in Microsoft- och Microsoft Entra-identiteter.

  4. Under Välj en klientorganisation för ditt program och dess användare väljer du Personalkonfiguration (aktuell klient) för anställda och företagsgäster eller väljer Extern konfiguration för konsumenter och företagskunder.

Välj appregistrering

Funktionen App Service-autentisering kan automatiskt skapa en appregistrering åt dig eller så kan du använda en registrering som du eller en katalogadministratör skapar separat.

Skapa en ny appregistrering automatiskt, såvida du inte behöver skapa en appregistrering separat. Du kan anpassa appregistreringen i administrationscentret för Microsoft Entra senare om du vill.

Följande situationer är de vanligaste fallen för att använda en befintlig appregistrering:

  • Ditt konto har inte behörighet att skapa appregistreringar i din Microsoft Entra-klientorganisation.
  • Du vill använda en appregistrering från en annan Microsoft Entra-klientorganisation än den som din app finns i.
  • Alternativet att skapa en ny registrering är inte tillgängligt för myndighetsmoln.

Du kan skapa och använda en ny appregistrering (alternativ 1) eller använda en befintlig registrering som skapats separat (alternativ 2).

Alternativ 1: Skapa och använda en ny appregistrering

Använd det här alternativet om du inte behöver skapa en appregistrering separat. Du kan anpassa appregistreringen i Microsoft Entra när du har skapat den.

Kommentar

Alternativet att skapa en ny registrering automatiskt är inte tillgängligt för myndighetsmoln. Definiera i stället en registrering separat.

  1. Välj Skapa ny appregistrering.

  2. Ange namnet på den nya appregistreringen.

  3. Välj kontotypen Som stöds:

    • Aktuell klientorganisation – enskild klientorganisation. Endast konton i den här organisationskatalogen. Alla användar- och gästkonton i din katalog kan använda ditt program eller API. Använd det här alternativet om målgruppen är intern för din organisation.
    • Alla Microsoft Entra-kataloger – Multitenant. Konton i valfri organisationskatalog. Alla användare med ett arbets- eller skolkonto från Microsoft kan använda ditt program eller API. Dessa konton omfattar skolor och företag som använder Office 365. Använd det här alternativet om målgruppen är företags- eller utbildningskunder och för att aktivera flera klientorganisationer.
    • Alla Microsoft Entra-kataloger och personliga Microsoft-konton. Konton i valfri organisationskatalog och personliga Microsoft-konton (till exempel Skype, Xbox). Alla användare med ett arbets- eller skolkonto eller ett personligt Microsoft-konto kan använda ditt program eller API. Den innehåller skolor och företag som använder Office 365 samt personliga konton som används för att logga in på tjänster som Xbox och Skype. Använd det här alternativet för att rikta in dig på den bredaste uppsättningen Microsoft-identiteter och aktivera flera klientorganisationer.
    • Endast personliga Microsoft-konton. Personliga konton som används för att logga in på tjänster som Xbox och Skype. Använd det här alternativet för att rikta in dig på den bredaste uppsättningen Microsoft-identiteter.

Du kan ändra namnet på registreringen eller de kontotyper som stöds senare om du vill.

En klienthemlighet skapas som en slot-sticky-programinställning med namnet MICROSOFT_PROVIDER_AUTHENTICATION_SECRET. Om du vill hantera hemligheten i Azure Key Vault kan du uppdatera den inställningen senare för att använda Key Vault-referenser.

Alternativ 2: Använd en befintlig registrering som skapats separat

Välj antingen:

  • Välj en befintlig appregistrering i den här katalogen och välj en appregistrering i listrutan.

  • Ange information om en befintlig appregistrering och ange:

    • Program-ID (klient).
    • Klienthemlighet (rekommenderas). Ett hemligt värde som programmet använder för att bevisa sin identitet när en token begärs. Det här värdet sparas i appens konfiguration som en slot-sticky-programinställning med namnet MICROSOFT_PROVIDER_AUTHENTICATION_SECRET. Om klienthemligheten inte har angetts använder inloggningsåtgärder från tjänsten det implicita beviljandeflödet OAuth 2.0, vilket inte rekommenderas.
    • Utfärdarens URL, som har formuläret <authentication-endpoint>/<tenant-id>/v2.0. Ersätt <authentication-endpoint> med värdet för autentiseringsslutpunkten som är specifikt för molnmiljön. Till exempel skulle en personalklientorganisation i globala Azure använda "https://sts.windows.net" som dess autentiseringsslutpunkt.

Om du behöver skapa en appregistrering manuellt i en klientorganisation för personal kan du läsa Registrera ett program med Microsofts identitetsplattform. När du går igenom registreringsprocessen bör du notera programmets (klient)-ID:t och klienthemlighetsvärdena.

Under registreringsprocessen går du till avsnittet Omdirigerings-URI:er och väljer Webb för plattform och skriver <app-url>/.auth/login/aad/callback. Exempel: https://contoso.azurewebsites.net/.auth/login/aad/callback

När du har skapat den ändrar du appregistreringen:

  1. I det vänstra navigeringsfältet väljer du Exponera ett API>Lägg till>Spara. Det här värdet identifierar programmet unikt när det används som en resurs, vilket gör att token kan begäras som beviljar åtkomst. Värdet är ett prefix för omfång som du skapar.

    För en app med en enda klientorganisation kan du använda standardvärdet, som är i formuläret api://<application-client-id>. Du kan också ange en mer läsbar URI som https://contoso.com/api baseras på en av de verifierade domänerna för din klientorganisation. För en app med flera klientorganisationer måste du ange en anpassad URI. Mer information om godkända format för app-ID-URI:er finns i Rekommenderade säkerhetsmetoder för programegenskaper i Microsoft Entra-ID.

  2. Välj Lägg till en omfattning.

    1. I Omfångsnamn anger du user_impersonation.
    2. I Vem kan samtycka väljer du Administratörer och användare om du vill tillåta användare att samtycka till det här omfånget.
    3. Ange namnet på medgivandeomfånget. Ange en beskrivning som du vill att användarna ska se på medgivandesidan. Ange till exempel Åtkomstprogramnamn><.
    4. Välj Lägg till definitionsområde.
  3. (Rekommenderas) Så här skapar du en klienthemlighet:

    1. I det vänstra navigeringsfältet väljer du Certifikat och hemligheter>Klienthemligheter>Ny klienthemlighet.
    2. Ange en beskrivning och förfallodatum och välj Lägg till.
    3. I fältet Värde kopierar du klienthemlighetsvärdet. När du har navigerat bort från den här sidan visas den inte igen.
  4. (Valfritt) Om du vill lägga till flera svars-URL:er väljer du Autentisering.

Konfigurera ytterligare kontroller

Ytterligare kontroller avgör vilka begäranden som tillåts komma åt ditt program. Du kan anpassa det här beteendet nu eller justera inställningarna senare från huvudskärmen för autentisering genom att välja Redigera bredvid Autentiseringsinställningar.

För Krav för klientprogram väljer du om du vill:

  • Tillåt endast begäranden från själva programmet
  • Tillåt begäranden från specifika klientprogram
  • Tillåt begäranden från alla program (rekommenderas inte)

För Identitetskrav väljer du om du vill:

  • Tillåt begäranden från valfri identitet
  • Tillåt begäranden från specifika identiteter

För Klientkrav väljer du om du vill:

  • Tillåt endast begäranden från utfärdarens klientorganisation
  • Tillåt begäranden från specifika klienter
  • Använd standardbegränsningar baserat på utfärdare

Din app kan fortfarande behöva fatta andra auktoriseringsbeslut i kod. Mer information finns i Använda en inbyggd auktoriseringsprincip.

Konfigurera autentiseringsinställningar

De här alternativen avgör hur programmet svarar på oautentiserade begäranden. Standardvalen omdirigerar alla begäranden för att logga in med den nya providern. Du kan ändra anpassa det här beteendet nu eller justera inställningarna senare från huvudskärmen för autentisering genom att välja Redigera bredvid Autentiseringsinställningar. Mer information finns i Autentiseringsflöde.

För Begränsa åtkomst avgör du om du vill:

  • Kräv autentisering
  • Tillåt oautentiserad åtkomst

För oautentiserade begäranden

  • HTTP 302 Hittades omdirigering: rekommenderas för webbplatser
  • HTTP 401 Obehörig: rekommenderas för API:er
  • HTTP 403 Förbjuden
  • HTTP 404 Hittades inte

Välj Tokenarkiv (rekommenderas). Tokenarkivet samlar in, lagrar och uppdaterar token för ditt program. Du kan inaktivera det här beteendet senare om din app inte behöver token eller om du behöver optimera prestandan.

Lägg till identitetsprovidern

Om du har valt personalkonfiguration kan du välja Nästa: Behörigheter och lägga till de Microsoft Graph-behörigheter som krävs av programmet. Dessa behörigheter läggs till i appregistreringen, men du kan också ändra dem senare. Om du har valt extern konfiguration kan du lägga till Microsoft Graph-behörigheter senare.

  • Markera Lägga till.

Nu är du redo att använda Microsofts identitetsplattform för autentisering i din app. Providern visas på skärmen Autentisering . Därifrån kan du redigera eller ta bort den här providerkonfigurationen.

Ett exempel på hur du konfigurerar Microsoft Entra-inloggning för en webbapp som har åtkomst till Azure Storage och Microsoft Graph finns i Lägga till appautentisering i webbappen.

Auktorisera begäranden

Som standard hanterar App Service-autentisering endast autentisering. Det avgör om uppringaren är den de säger att de är. Auktorisering, som avgör om anroparen ska ha åtkomst till en resurs, är ett steg längre än autentisering. Mer information finns i Grundläggande om auktorisering.

Din app kan fatta auktoriseringsbeslut i kod. App Service-autentisering tillhandahåller vissa inbyggda kontroller, vilket kan hjälpa, men de räcker kanske inte för att täcka appens auktoriseringsbehov.

Dricks

Program med flera klienter bör verifiera utfärdaren och klient-ID:t för begäran som en del av den här processen för att kontrollera att värdena är tillåtna. När App Service-autentisering har konfigurerats för ett scenario med flera klienter verifieras inte vilken klientorganisation begäran kommer från. En app kan till exempel behöva begränsas till specifika klienter, baserat på om organisationen har registrerat sig för tjänsten. Se Uppdatera koden för att hantera flera utfärdarvärden.

Utföra valideringar från programkod

När du utför auktoriseringskontroller i din appkod kan du använda anspråksinformationen som App Service-autentisering gör tillgänglig. Mer information finns i Åtkomst till användaranspråk i appkod.

Det inmatade x-ms-client-principal huvudet innehåller ett Base64-kodat JSON-objekt med anspråken som hävdas om anroparen. Som standard går dessa anspråk igenom en anspråksmappning, så anspråksnamnen kanske inte alltid matchar det du ser i token. Till exempel mappas anspråket tid till http://schemas.microsoft.com/identity/claims/tenantid i stället.

Du kan också arbeta direkt med den underliggande åtkomsttoken från den inmatade x-ms-token-aad-access-token rubriken.

Använda en inbyggd auktoriseringsprincip

Den skapade appregistreringen autentiserar inkommande begäranden för din Microsoft Entra-klientorganisation. Som standard tillåter den också alla i klientorganisationen att komma åt programmet. Den här metoden är bra för många program. Vissa program måste begränsa åtkomsten ytterligare genom att fatta auktoriseringsbeslut. Programkoden är ofta den bästa platsen för att hantera anpassad auktoriseringslogik. För vanliga scenarier tillhandahåller Microsofts identitetsplattform dock inbyggda kontroller som du kan använda för att begränsa åtkomsten.

Det här avsnittet visar hur du aktiverar inbyggda kontroller med hjälp av App Service-autentiserings-V2-API:et. För närvarande är det enda sättet att konfigurera dessa inbyggda kontroller med hjälp av Azure Resource Manager-mallar eller REST-API:et.

I API-objektet har Microsoft Entra-identitetsproviderns konfiguration ett validation avsnitt som kan innehålla ett defaultAuthorizationPolicy objekt som i följande struktur:

{
    "validation": {
        "defaultAuthorizationPolicy": {
            "allowedApplications": [],
            "allowedPrincipals": {
                "identities": []
            }
        }
    }
}
Property beskrivning
defaultAuthorizationPolicy En grupp med krav som måste uppfyllas för att få åtkomst till appen. Åtkomst beviljas baserat på en logisk AND över var och en av dess konfigurerade egenskaper. När allowedApplications och allowedPrincipals är båda konfigurerade måste den inkommande begäran uppfylla båda kraven för att godkännas.
allowedApplications En lista över klient-ID:t för strängprogram som representerar klientresursen som anropar till appen. När den här egenskapen har konfigurerats som en icke-et-matris godkänns endast token som hämtas av ett program som anges i listan.

Den här principen utvärderar eller azp anspråket appid för den inkommande token, som måste vara en åtkomsttoken. Se Nyttolastanspråk.
allowedPrincipals En grupp kontroller som avgör om huvudkontot som representeras av den inkommande begäran kan komma åt appen. Nöjdhet allowedPrincipals baseras på en logisk OR över dess konfigurerade egenskaper.
identities (under allowedPrincipals) En lista över strängobjekt-ID : er som representerar användare eller program som har åtkomst. När den här egenskapen har konfigurerats som en icke-matris allowedPrincipals kan kravet uppfyllas om användaren eller programmet som representeras av begäran anges i listan. Det finns en gräns på totalt 500 tecken i listan över identiteter.

Den här principen utvärderar anspråket för oid den inkommande token. Se Nyttolastanspråk.

Vissa kontroller kan också konfigureras via en programinställning, oavsett vilken API-version som används. Programinställningen WEBSITE_AUTH_AAD_ALLOWED_TENANTS kan konfigureras med en kommaavgränsad lista med upp till 10 klient-ID:t, till exempel aaaabbbb-0000-cccc-1111-dddd2222eeee.

Den här inställningen kan kräva att den inkommande token kommer från en av de angivna klientorganisationer som anges av anspråket tid . Programinställningen WEBSITE_AUTH_AAD_REQUIRE_CLIENT_SERVICE_PRINCIPAL kan konfigureras till true eller 1 kräva att den inkommande token innehåller ett oid anspråk. Om allowedPrincipals.identities har konfigurerats ignoreras den här inställningen och behandlas som true eftersom anspråket kontrolleras mot den oid angivna listan med identiteter.

Begäranden som misslyckas med dessa inbyggda kontroller får ett HTTP-svar 403 Forbidden .

Konfigurera klientappar för åtkomst till din App Service

I föregående avsnitt registrerade du din App Service eller Azure-funktion för att autentisera användare. Det här avsnittet beskriver hur du registrerar interna klienter eller daemon-appar i Microsoft Entra. De kan begära åtkomst till API:er som exponeras av din App Service för användare eller sig själva, till exempel i en N-nivåarkitektur. Om du bara vill autentisera användare krävs inte stegen i det här avsnittet.

Internt klientprogram

Du kan registrera interna klienter för att begära åtkomst till App Service-appens API:er för en inloggad användare.

  1. På portalmenyn väljer du Microsoft Entra-ID.

  2. I det vänstra navigeringsfältet väljer du Hantera> Appregistreringar och sedan Ny registrering.

  3. På sidan Registrera ett program anger du ett namn för din appregistrering.

  4. I Omdirigerings-URI väljer du Offentlig klient/intern (mobil och skrivbord) och skriver URL:en <app-url>/.auth/login/aad/callback. Exempel: https://contoso.azurewebsites.net/.auth/login/aad/callback

  5. Välj Registrera.

  6. När appregistreringen har skapats kopierar du värdet för program-ID (klient-ID).

    Kommentar

    För ett Microsoft Store-program använder du paket-SID som URI i stället.

  7. I det vänstra navigeringsfältet väljer du Hantera>API-behörigheter. Välj sedan Lägg till en behörighet>Mina API:er.

  8. Välj den appregistrering som du skapade tidigare för din App Service-app. Om du inte ser appregistreringen kontrollerar du att du lägger till user_impersonation omfånget i appregistreringen.

  9. Under Delegerade behörigheter väljer du user_impersonation och sedan Lägg till behörigheter.

Du har konfigurerat ett internt klientprogram som kan begära åtkomst till din App Service-app för en användares räkning.

Daemon-klientprogram (tjänst-till-tjänst-anrop)

I en N-nivåarkitektur kan klientprogrammet hämta en token för att anropa en App Service- eller Funktionsapp för själva klientappens räkning, inte för en användares räkning. Det här scenariot är användbart för icke-interaktiva daemonprogram som utför uppgifter utan en inloggad användare. Den använder OAuth 2.0-klientens standardautentiseringsuppgifter. Mer information finns i Microsofts identitetsplattform och OAuth 2.0-klientens autentiseringsuppgifter.

  1. På menyn Azure Portal väljer du Microsoft Entra-ID.
  2. I det vänstra navigeringsfältet väljer du Hantera> Appregistreringar> Ny registrering.
  3. På sidan Registrera ett program anger du ett namn för din appregistrering.
  4. För ett daemonprogram behöver du ingen omdirigerings-URI så att du kan hålla den tom.
  5. Välj Registrera.
  6. När appregistreringen har skapats kopierar du värdet för program-ID (klient-ID).
  7. I det vänstra navigeringsfältet väljer du Hantera>certifikat och hemligheter. Välj sedan Klienthemligheter>Ny klienthemlighet.
  8. Ange en beskrivning och förfallodatum och välj Lägg till.
  9. I fältet Värde kopierar du klienthemlighetsvärdet. När du har navigerat bort från den här sidan visas den inte igen.

Nu kan du begära en åtkomsttoken med hjälp av klient-ID och klienthemlighet. Ange parametern resource till program-ID-URI:n för målappen. Den resulterande åtkomsttoken kan sedan visas för målappen med standardrubriken OAuth 2.0-auktorisering. App Service-autentisering validerar och använder token som vanligt för att nu ange att anroparen är autentiserad. I det här fallet är anroparen ett program, inte en användare.

Med den här metoden kan alla klientprogram i din Microsoft Entra-klientorganisation begära en åtkomsttoken och autentisera till målappen. Om du också vill framtvinga auktorisering för att endast tillåta vissa klientprogram måste du utföra extra konfiguration.

  1. Definiera en approll i manifestet för appregistreringen som representerar apptjänsten eller funktionsappen som du vill skydda.

  2. På den appregistrering som representerar klienten som måste auktoriseras väljer du API-behörigheter>Lägg till en behörighet>Mina API:er.

  3. Välj den appregistrering som du skapade tidigare. Om du inte ser appregistreringen kontrollerar du att du har lagt till en approll.

  4. Under Programbehörigheter väljer du den approll som du skapade tidigare. Välj Lägg till behörigheter.

  5. Välj Bevilja administratörsmedgivande för att auktorisera klientprogrammet för att begära behörigheten.

    På samma sätt som i föregående scenario (innan några roller lades till) kan du nu begära en åtkomsttoken för samma mål resourceoch åtkomsttoken innehåller ett roles anspråk som innehåller de approller som har auktoriserats för klientprogrammet.

I appkoden för målappen eller funktionsappen kan du nu verifiera att de förväntade rollerna finns i token. App Service-autentisering utför inte den här valideringen. Mer information finns i Åtkomst till användaranspråk.

Du har konfigurerat ett daemonklientprogram som kan komma åt din App Service-app med sin egen identitet.

Bästa praxis

Oavsett vilken konfiguration du använder för att konfigurera autentiseringen skyddar följande metodtips din klientorganisation och dina program på ett säkrare sätt:

  • Konfigurera varje App Service-app med en egen appregistrering i Microsoft Entra.
  • Ge varje App Service-app sina egna behörigheter och medgivande.
  • Undvik behörighetsdelning mellan miljöer. Använd separata appregistreringar för separata distributionsplatser. När du testar ny kod kan den här metoden hjälpa till att förhindra att problem påverkar produktionsappen.

Migrera till Microsoft Graph

Vissa äldre appar kan konfigureras med ett beroende av den inaktuella Azure AD Graph, som är schemalagd för fullständig tillbakadragning. Din appkod kan till exempel anropa Azure AD Graph för att kontrollera gruppmedlemskap som en del av ett auktoriseringsfilter i en pipeline för mellanprogram. Appar bör flyttas till Microsoft Graph. Mer information finns i Migrera dina appar från Azure AD Graph till Microsoft Graph.

Under den här migreringen kan du behöva göra vissa ändringar i konfigurationen av App Service-autentisering. När du har lagt till Microsoft Graph-behörigheter i din appregistrering kan du:

  1. Uppdatera utfärdarens URL så att den innehåller suffixet /v2.0 om det inte redan gör det.

  2. Ta bort begäranden om Azure AD Graph-behörigheter från din inloggningskonfiguration. Vilka egenskaper som ska ändras beror på vilken version av hanterings-API:et du använder:

    • Om du använder V1-API:et (/authsettings) finns den här inställningen i matrisen additionalLoginParams .
    • Om du använder V2-API:et (/authsettingsV2) finns den här inställningen i matrisen loginParameters .

    Du måste till exempel ta bort alla referenser till https://graph.windows.net. Den här ändringen inkluderar parametern resource , som inte stöds av /v2.0 slutpunkten, eller eventuella omfång som du specifikt begär från Azure AD Graph.

    Du måste också uppdatera konfigurationen för att begära de nya Microsoft Graph-behörigheter som du har konfigurerat för programregistreringen. Du kan använda .default-omfånget för att förenkla den här installationen i många fall. Det gör du genom att lägga till en ny inloggningsparameter scope=openid profile email https://graph.microsoft.com/.default.

När App Service-autentisering försöker logga in med dessa ändringar begär den inte längre behörigheter till Azure AD Graph. I stället hämtar den en token för Microsoft Graph. All användning av denna token från programkoden måste också uppdateras, enligt beskrivningen i Migrera dina appar från Azure AD Graph till Microsoft Graph.

Nästa steg