API's beveiligen met behulp van abonnementen

Voltooid

Wanneer u API's publiceert via API Management, is het eenvoudig en gebruikelijk om toegang tot deze API's te beveiligen met behulp van abonnementssleutels. Ontwikkelaars die de gepubliceerde API's moeten gebruiken, moeten een geldige abonnementssleutel in HTTP-aanvragen opnemen wanneer ze deze API's aanroepen. Anders worden de aanroepen onmiddellijk geweigerd door de API Management-gateway. Ze worden niet doorgestuurd naar de back-endservices.

Als u een abonnementssleutel wilt ophalen voor toegang tot API's, is een abonnement vereist. Een abonnement is in feite een benoemde container voor een paar abonnementssleutels. Ontwikkelaars die de gepubliceerde API's moeten gebruiken, kunnen abonnementen krijgen. En ze hebben geen goedkeuring nodig van API-uitgevers. API-uitgevers kunnen ook rechtstreeks abonnementen maken voor API-consumenten.

Notitie

API Management biedt ook ondersteuning voor andere mechanismen voor het beveiligen van toegang tot API's, waaronder: OAuth2.0, clientcertificaten en vermelding van IP-acceptatie.

Abonnementen en sleutels

Een abonnementssleutel is een unieke, automatisch gegenereerde sleutel die kan worden doorgegeven in de headers van de clientaanvraag of als queryreeksparameter. De sleutel is direct gekoppeld aan een abonnement, dat een bereik van verschillende gebieden kan hebben. Abonnementen geven u nauwkeurige controle over machtigingen en beleid.

De drie belangrijkste abonnementen zijn:

Bereik Details
Alle API's Is van toepassing op elke API die toegankelijk is vanuit de gateway
Enkele API Dit bereik is van toepassing op één geïmporteerde API en alle eindpunten ervan
Product Een product is een verzameling van een of meer API's die u in API Management configureert. U kunt API's toewijzen aan meer dan één product. Producten kunnen verschillende toegangsregels, gebruiksquota's en gebruiksvoorwaarden hebben.

Toepassingen die een beveiligde API aanroepen, moeten de sleutel in elke aanvraag bevatten.

U kunt deze abonnementssleutels op elk gewenst moment opnieuw genereren, bijvoorbeeld als u vermoedt dat een sleutel is gedeeld met niet-gemachtigde gebruikers.

Image showing the Subscriptions screen.

Elk abonnement heeft twee sleutels, een primaire en een secundaire. Het hebben van twee sleutels maakt het gemakkelijker als u een sleutel opnieuw moet genereren. Als u bijvoorbeeld de primaire sleutel wilt wijzigen en downtime wilt voorkomen, gebruikt u de secundaire sleutel in uw apps.

Voor producten waarvoor abonnementen zijn ingeschakeld, moeten clients een sleutel opgeven bij het aanroepen van API's voor dat product. Ontwikkelaars kunnen een sleutel verkrijgen door een abonnementsaanvraag te verzenden. Als u de aanvraag goedkeurt, moet u de abonnementssleutel veilig verzenden, bijvoorbeeld in een versleuteld bericht. Deze stap is een essentieel onderdeel van de API Management-werkstroom.

Een API aanroepen met een abonnementssleutel

Toepassingen moeten een geldige sleutel bevatten in alle HTTP-aanvragen wanneer ze aanroepen doen naar API-eindpunten die worden beveiligd door een abonnement. Sleutels kunnen worden doorgegeven in de header van de aanvraag of als een queryreeks in de URL.

De standaard headernaam is Ocp-Apim-Subscription-Key en de standaard queryreeks is subscription-key.

Als u uw API-aanroepen wilt testen, kunt u de ontwikkelaarsportal of opdrachtregelprogramma's gebruiken, zoals cURL. Hier is een voorbeeld van een GET-aanvraag vanuit de ontwikkelaarsportal, waarin de header met de abonnementssleutel wordt weergegeven:

Call API from developer portal

Hier leest hoe u een sleutel in de header van de aanvraag kunt doorgeven met behulp van cURL:

curl --header "Ocp-Apim-Subscription-Key: <key string>" https://<apim gateway>.azure-api.net/api/path

Hier is een voorbeeld van een cURL-opdracht die een sleutel in de URL doorgeeft als een queryreeks:

curl https://<apim gateway>.azure-api.net/api/path?subscription-key=<key string>

Als de sleutel niet wordt doorgegeven in de header of als een queryreeks in de URL, krijgt u een 401 Toegang geweigerd-reactie van de API-gateway.