Uw API beveiligen met een API-connector in Microsoft Entra Externe ID selfservicegebruikersstromen voor registratie
Van toepassing op:Externe tenants
van werknemers (meer informatie)
Wanneer u een REST API in een Microsoft Entra Externe ID selfservicegebruikersstroom voor registratie integreert, moet u uw REST API-eindpunt beveiligen met verificatie. De REST API-verificatie zorgt ervoor dat alleen services met de juiste referenties, zoals Microsoft Entra-id, uw eindpunt kunnen aanroepen. In dit artikel wordt beschreven hoe u REST API kunt beveiligen.
Vereisten
Voer de stappen uit in de handleiding Scenario: Een API-connector toevoegen aan een gebruikersstroom voor registratie.
U kunt uw API-eindpunt beveiligen met behulp van HTTP-basisverificatie of HTTPS-clientcertificaatverificatie. In beide gevallen geeft u de referenties op die door Microsoft Entra ID worden gebruikt bij het aanroepen van uw API-eindpunt. Uw API-eindpunt controleert vervolgens de referenties en voert autorisatiebeslissingen uit.
HTTP-basisverificatie
HTTP-basisverificatie wordt gedefinieerd in RFC 2617. Basisverificatie werkt als volgt: Microsoft Entra-id verzendt een HTTP-aanvraag met de clientreferenties (username
en password
) in de Authorization
header. De referenties zijn opgemaakt als de base64-gecodeerde tekenreeks username:password
. Uw API is vervolgens verantwoordelijk voor het controleren van deze waarden om andere autorisatiebeslissingen uit te voeren.
Voer de volgende stappen uit om een API-connector te configureren met HTTP-basisverificatie:
- Meld u aan bij het Microsoft Entra-beheercentrum als ten minste een gebruikersbeheerder.
- Blader naar overzicht>van externe identiteiten.>
- Selecteer Alle API-connectors en selecteer vervolgens de API-connector die u wilt configureren.
- Voor het Verificatietype selecteert u Basis.
- Geef de Gebruikersnaam en het Wachtwoord van uw REST API-eindpunt op.
- Selecteer Opslaan.
Verificatie van HTTPS-clientcertificaten
Verificatie van clientcertificaten is een wederzijdse verificatie op basis van certificaten, waarbij de client, Microsoft Entra-id, het clientcertificaat aan de server verstrekt om de identiteit te bewijzen. Dit gebeurt als onderdeel van de SSL-handshake. Uw API is verantwoordelijk voor het valideren van de certificaten van een geldige client, zoals Microsoft Entra-id, en het uitvoeren van autorisatiebeslissingen. Het clientcertificaat is een digitaal X.509-certificaat.
Belangrijk
In productieomgevingen moet het certificaat worden ondertekend door een certificeringsinstantie.
Een certificaat maken
Optie 1: Azure Key Vault gebruiken (aanbevolen)
Als u een certificaat wilt maken, kunt u Azure Key Vault gebruiken, met opties voor zelfondertekende certificaten en integraties met certificaatverlenerproviders voor ondertekende certificaten. Aanbevolen instellingen zijn onder andere:
-
Onderwerp:
CN=<yourapiname>.<tenantname>.onmicrosoft.com
-
Inhoudstype:
PKCS #12
-
Levensduur Acton-type:
Email all contacts at a given percentage lifetime
ofEmail all contacts a given number of days before expiry
-
Type sleutel:
RSA
-
Sleutelgrootte:
2048
-
Exporteerbare persoonlijke sleutel:
Yes
(om het.pfx
-bestand te kunnen exporteren)
Vervolgens kunt u het certificaat exporteren.
Optie 2: een zelfondertekend certificaat voorbereiden met behulp van PowerShell
Als u nog geen certificaat hebt, kunt u een zelfondertekend certificaat gebruiken. Een zelfondertekend certificaat is een beveiligingscertificaat dat niet is ondertekend door een certificeringsinstantie (CA) en geen beveiligingsgaranties biedt van een certificaat dat is ondertekend door een CA.
Gebruik in Windows de cmdlet New-SelfSignedCertificate in PowerShell om een certificaat te genereren.
Voer de volgende PowerShell-opdracht uit om een zelfondertekend certificaat te genereren. Wijzig indien van toepassing het argument
-Subject
voor uw toepassing en de Azure AD B2C-tenantnaam, zoalscontosowebapp.contoso.onmicrosoft.com
. U kunt ook de-NotAfter
-datum aanpassen om een andere vervaldatum voor het certificaat op te geven.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"
Ga op een Windows-computer naar Gebruikerscertificaten beheren en selecteer dit
Selecteer onder Certificaten - huidige gebruiker de optie Persoonlijk>Certificaten>yourappname.yourtenant.onmicrosoft.com.
Selecteer het certificaat en vervolgens Actie>Alle taken>Exporteren.
Selecteer Volgende>Ja, exporteer de persoonlijke sleutel>Volgende.
Accepteer de standaardwaarden voor Exportbestandsindeling en selecteer vervolgens Volgende.
Schakel de optie Wachtwoord in, voer een wachtwoord in voor het certificaat en selecteer vervolgens Volgende.
Als u een locatie wilt opgeven om uw certificaat in op te slaan, selecteert u Bladeren en navigeert u naar de gewenste map.
Voer in het venster Opslaan als een bestandsnaam in en selecteer vervolgens Opslaan.
Selecteer Volgende>voltooien.
Azure AD B2C accepteert alleen het PFX-bestandswachtwoord als het wachtwoord is versleuteld met de TripleDES-SHA1-optie in het hulpprogramma voor het exporteren vanuit het Windows-certificaatarchief, in plaats van AES256-SHA256.
Uw API-connector configureren
Voer de volgende stappen uit om een API-connector te configureren met clientcertificaatverificatie:
- Meld u aan bij het Microsoft Entra-beheercentrum als ten minste een gebruikersbeheerder.
- Blader naar overzicht>van externe identiteiten.>
- Selecteer Alle API-connectors en selecteer vervolgens de API-connector die u wilt configureren.
- Voor het Verificatietype selecteert u Certificaat.
- Selecteer in het vak Certificaat uploaden het PFX-bestand van uw certificaat met een persoonlijke sleutel.
- Typ in het vak Wachtwoord invoeren het wachtwoord van het certificaat.
- Selecteer Opslaan.
Autorisatiebeslissingen uitvoeren
Uw API moet de autorisatie implementeren op basis van verzonden clientcertificaten om de API-eindpunten te beveiligen. Voor Azure App Service en Azure Functions raadpleegt u wederzijdse TLS-verificatie configureren om te leren hoe u het certificaat kunt inschakelen en valideren vanuit uw API-code. U kunt Azure API Management ook gebruiken als laag voor elke API-service om eigenschappen van clientcertificaten te controleren op basis van de gewenste waarden.
Certificaten vernieuwen
Het is raadzaam om herinneringswaarschuwingen in te stellen voor wanneer uw certificaat verloopt. U moet een nieuw certificaat genereren en de bovenstaande stappen herhalen wanneer de gebruikte certificaten bijna verlopen. Als u het gebruik van een nieuw certificaat wilt 'rollen', kan uw API-service gedurende een bepaalde periode oude en nieuwe certificaten blijven accepteren terwijl het nieuwe certificaat wordt geïmplementeerd.
Als u een nieuw certificaat wilt uploaden naar een bestaande API-connector, selecteert u de API-connector onder API-connectors en selecteert u bij Nieuw certificaat uploaden. Het laatst geüploade certificaat dat niet is verlopen en waarvan de begindatum is verstreken, wordt automatisch gebruikt door Microsoft Entra-id.
Verificatie via een API-sleutel
Sommige services gebruiken een 'API-sleutel'-mechanisme om de toegang tot uw HTTP-eindpunten tijdens de ontwikkeling te verbergen door de aanroeper te verplichten een unieke sleutel op te nemen als een HTTP-header of HTTP-queryparameter. Voor Azure Functions kunt u dit doen door de code
als een queryparameter op te nemen in de Eindpunt-URL van uw API-connector. Bijvoorbeeld https://contoso.azurewebsites.net/api/endpoint
?code=0123456789
).
Dit is geen mechanisme dat alleen in productie moet worden gebruikt. Daarom is configuratie voor basis- of certificaatverificatie altijd vereist. Als u geen verificatiemethode (niet aanbevolen) wilt implementeren voor ontwikkelingsdoeleinden, kunt u 'basisverificatie' selecteren in de configuratie van de API-connector en tijdelijke waarden username
gebruiken voor en password
dat uw API kan negeren terwijl u de juiste autorisatie implementeert.
Volgende stappen
- Ga aan de slag met onze quickstartvoorbeelden.