Dela via


Skydda ditt API använde en API-anslutningsapp i Användarflöden för microsoft Entra-externt ID för självbetjäningsregistrering

Gäller för:Grön cirkel med en vit bockmarkeringssymbol.Personalklientorganisationer Vit cirkel med en grå X-symbol. Externa klienter (läs mer)

När du integrerar ett REST-API i ett användarflöde för externt ID för Microsoft Entra-självbetjäning måste du skydda REST API-slutpunkten med autentisering. REST API-autentiseringen säkerställer att endast tjänster som har rätt autentiseringsuppgifter, till exempel Microsoft Entra-ID, kan göra anrop till slutpunkten. I den här artikeln beskrivs hur du skyddar REST API.

Förutsättningar

Slutför stegen i genomgången : Lägg till en API-anslutningsapp i en användarflödesguide för registrering.

Du kan skydda API-slutpunkten med hjälp av antingen grundläggande HTTP-autentisering eller HTTPS-klientcertifikatautentisering. I båda fallen anger du de autentiseringsuppgifter som Microsoft Entra-ID använder när du anropar API-slutpunkten. API-slutpunkten kontrollerar sedan autentiseringsuppgifterna och utför auktoriseringsbeslut.

Grundläggande HTTP-autentisering

Dricks

Stegen i den här artikeln kan variera något beroende på vilken portal du börjar från.

Grundläggande HTTP-autentisering definieras i RFC 2617. Grundläggande autentisering fungerar på följande sätt: Microsoft Entra-ID skickar en HTTP-begäran med klientens autentiseringsuppgifter (username och password) i Authorization rubriken. Autentiseringsuppgifterna formateras som den base64-kodade strängen username:password. Ditt API ansvarar sedan för att kontrollera dessa värden för att utföra andra auktoriseringsbeslut.

Följ dessa steg för att konfigurera en API-Anslut eller med grundläggande HTTP-autentisering:

  1. Logga in på administrationscentret för Microsoft Entra som minst användaradministratör.
  2. Bläddra till Översikt>över identiteter för externa identiteter.>
  3. Välj Alla API-anslutningsappar och välj sedan den API-Anslut eller som du vill konfigurera.
  4. Som Autentiseringstyp väljer du Grundläggande.
  5. Ange användarnamnet och lösenordet för rest-API-slutpunkten. Skärmbild av grundläggande autentiseringskonfiguration för en API-anslutningsapp.
  6. Välj Spara.

HTTPS-klientcertifikatautentisering

Klientcertifikatautentisering är en ömsesidig certifikatbaserad autentisering, där klienten, Microsoft Entra ID, tillhandahåller sitt klientcertifikat till servern för att bevisa sin identitet. Detta händer som en del av SSL-handskakningen. Ditt API ansvarar för att verifiera att certifikaten tillhör en giltig klient, till exempel Microsoft Entra-ID, och att utföra auktoriseringsbeslut. Klientcertifikatet är ett digitalt X.509-certifikat.

Viktigt!

I produktionsmiljöer måste certifikatet signeras av en certifikatutfärdare.

Skapa ett certifikat

Om du vill skapa ett certifikat kan du använda Azure Key Vault, som har alternativ för självsignerade certifikat och integreringar med certifikatutfärdare för signerade certifikat. Rekommenderade inställningar är:

  • Ämne: CN=<yourapiname>.<tenantname>.onmicrosoft.com
  • Innehållstyp: PKCS #12
  • Lifetime Acton Type: Email all contacts at a given percentage lifetime eller Email all contacts a given number of days before expiry
  • Nyckeltyp: RSA
  • Nyckelstorlek: 2048
  • Exporterbar privat nyckel: Yes (för att kunna exportera .pfx filen)

Du kan sedan exportera certifikatet.

Alternativ 2: Förbereda ett självsignerat certifikat med PowerShell

Om du inte redan har ett certifikat kan du använda ett självsignerat certifikat. Ett självsignerat certifikat är ett säkerhetscertifikat som inte är signerat av en certifikatutfärdare (CA) och som inte tillhandahåller säkerhetsgarantierna för ett certifikat som signerats av en certifikatutfärdare.

I Windows använder du cmdleten New-SelfSignedCertificate i PowerShell för att generera ett certifikat.

  1. Kör följande PowerShell-kommando för att generera ett självsignerat certifikat. -Subject Ändra argumentet efter behov för ditt program och Azure AD B2C-klientnamn, till exempel contosowebapp.contoso.onmicrosoft.com. Du kan också justera -NotAfter datumet för att ange ett annat förfallodatum för certifikatet.

    New-SelfSignedCertificate `
        -KeyExportPolicy Exportable `
        -Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
        -KeyAlgorithm RSA `
        -KeyLength 2048 `
        -KeyUsage DigitalSignature `
        -NotAfter (Get-Date).AddMonths(12) `
        -CertStoreLocation "Cert:\CurrentUser\My"
    
  2. På Windows-datorn söker du efter och väljer Hantera användarcertifikat

  3. Under Certifikat – aktuell användare väljer du Personliga>certifikat>yourappname.yourtenant.onmicrosoft.com.

  4. Välj certifikatet och välj sedan Åtgärd>alla uppgifter>Exportera.

  5. Välj Nästa>Ja, exportera den privata nyckeln>Nästa.

  6. Acceptera standardinställningarna för Exportera filformat och välj sedan Nästa.

  7. Aktivera alternativet Lösenord , ange ett lösenord för certifikatet och välj sedan Nästa.

  8. Om du vill ange en plats för att spara certifikatet väljer du Bläddra och navigerar till valfri katalog.

  9. I fönstret Spara som anger du ett filnamn och väljer sedan Spara.

  10. Välj Nästa>Slutför.

För att Azure AD B2C ska acceptera .pfx-fillösenordet måste lösenordet krypteras med alternativet TripleDES-SHA1 i exportverktyget för Windows Certificate Store, till skillnad från AES256-SHA256.

Konfigurera api-Anslut eller

Följ dessa steg för att konfigurera en API-Anslut eller med klientcertifikatautentisering:

  1. Logga in på administrationscentret för Microsoft Entra som minst användaradministratör.
  2. Bläddra till Översikt>över identiteter för externa identiteter.>
  3. Välj Alla API-anslutningsappar och välj sedan den API-Anslut eller som du vill konfigurera.
  4. Som Autentiseringstyp väljer du Certifikat.
  5. I rutan Ladda upp certifikat väljer du certifikatets .pfx-fil med en privat nyckel.
  6. I rutan Ange lösenord skriver du certifikatets lösenord. Skärmbild av konfiguration av certifikatautentisering för en API-anslutningsapp.
  7. Välj Spara.

Fatta auktoriseringsbeslut

Ditt API måste implementera auktoriseringen baserat på skickade klientcertifikat för att skydda API-slutpunkterna. Information om Azure App Service och Azure Functions finns i Konfigurera ömsesidig TLS-autentisering för att lära dig hur du aktiverar och verifierar certifikatet från din API-kod. Du kan också använda Azure API Management som ett lager framför valfri API-tjänst för att kontrollera egenskaperna för klientcertifikatet mot önskade värden.

Förnya certifikat

Vi rekommenderar att du anger påminnelseaviseringar för när certifikatet upphör att gälla. Du måste generera ett nytt certifikat och upprepa stegen ovan när använda certifikat snart upphör att gälla. Om du vill "rulla" användningen av ett nytt certifikat kan API-tjänsten fortsätta att acceptera gamla och nya certifikat under en tillfällig tid medan det nya certifikatet distribueras.

Om du vill ladda upp ett nytt certifikat till en befintlig API-anslutningsapp väljer du API-anslutningsappen under API-anslutningsappar och väljer på Ladda upp nytt certifikat. Det senast uppladdade certifikatet som inte har upphört att gälla och vars startdatum har passerat används automatiskt av Microsoft Entra ID.

Skärmbild av ett nytt certifikat, när ett redan finns.

API-nyckelautentisering

Vissa tjänster använder en "API-nyckel"-mekanism för att dölja åtkomsten till dina HTTP-slutpunkter under utvecklingen genom att kräva att anroparen tar med en unik nyckel som HTTP-huvud eller HTTP-frågeparameter. För Azure Functions kan du göra detta genom att inkludera code som en frågeparameter i slutpunkts-URL:en för API-anslutningsappen. Till exempel https://contoso.azurewebsites.net/api/endpoint?code=0123456789).

Det här är inte en mekanism som ska användas ensam i produktion. Därför krävs alltid konfiguration för grundläggande autentisering eller certifikatautentisering. Om du inte vill implementera någon autentiseringsmetod (rekommenderas inte) i utvecklingssyfte kan du välja "grundläggande" autentisering i API-anslutningskonfigurationen och använda tillfälliga värden för username och password som ditt API kan bortse från när du implementerar korrekt auktorisering.

Nästa steg

  • Kom igång med våra snabbstartsexempel.