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:Personalklientorganisationer 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:
- Logga in på administrationscentret för Microsoft Entra som minst användaradministratör.
- Bläddra till Översikt>över identiteter för externa identiteter.>
- Välj Alla API-anslutningsappar och välj sedan den API-Anslut eller som du vill konfigurera.
- Som Autentiseringstyp väljer du Grundläggande.
- Ange användarnamnet och lösenordet för rest-API-slutpunkten.
- 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
Alternativ 1: Använd Azure Key Vault (rekommenderas)
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
ellerEmail 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.
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 exempelcontosowebapp.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"
På Windows-datorn söker du efter och väljer Hantera användarcertifikat
Under Certifikat – aktuell användare väljer du Personliga>certifikat>yourappname.yourtenant.onmicrosoft.com.
Välj certifikatet och välj sedan Åtgärd>alla uppgifter>Exportera.
Välj Nästa>Ja, exportera den privata nyckeln>Nästa.
Acceptera standardinställningarna för Exportera filformat och välj sedan Nästa.
Aktivera alternativet Lösenord , ange ett lösenord för certifikatet och välj sedan Nästa.
Om du vill ange en plats för att spara certifikatet väljer du Bläddra och navigerar till valfri katalog.
I fönstret Spara som anger du ett filnamn och väljer sedan Spara.
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:
- Logga in på administrationscentret för Microsoft Entra som minst användaradministratör.
- Bläddra till Översikt>över identiteter för externa identiteter.>
- Välj Alla API-anslutningsappar och välj sedan den API-Anslut eller som du vill konfigurera.
- Som Autentiseringstyp väljer du Certifikat.
- I rutan Ladda upp certifikat väljer du certifikatets .pfx-fil med en privat nyckel.
- I rutan Ange lösenord skriver du certifikatets lösenord.
- 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.
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.