Video: In diesem kurzen Video erfahren Sie, wie Sie Ihre API sichern.
Aufgaben in diesem Lab
In dieser Anleitung wird Folgendes erläutert:
Erstellen Sie einen API-Proxy, der einen API-Schlüssel erfordert.
Erstellen Sie ein API-Produkt, einen Entwickler und eine Entwickler-App.
API mit einem API-Schlüssel aufrufen
Es ist wichtig, Ihre API vor nicht autorisiertem Zugriff zu schützen. Eine Möglichkeit hierfür ist API-Schlüssel.
Wenn eine Anwendung eine Anfrage an einen API-Proxy sendet, der zum Prüfen eines API-Schlüssels konfiguriert ist, muss die Anwendung einen gültigen Schlüssel bereitstellen. Zur Laufzeit prüft die API-Schlüsselrichtlinie, ob der bereitgestellte API-Schlüssel angegeben wurde:
Ist gültig
Wurde nicht widerrufen
Entspricht dem API-Schlüssel für das API-Produkt, das die angeforderten Ressourcen bereitstellt.
Wenn der Schlüssel gültig ist, ist die Anfrage zulässig. Ist der Schlüssel ungültig, führt die Anfrage zu einem Autorisierungsfehler.
Wählen Sie Ihre Organisation im Drop-down-Menü oben links in der Benutzeroberfläche aus.
Klicken Sie auf Entwickeln > API-Proxys, um die Liste der API-Proxys aufzurufen.
Klicken Sie auf Neu erstellen.
Wählen Sie im Assistenten zum Erstellen eines Proxys die Option Reverse proxy (am häufigsten) aus.
Konfigurieren Sie den Proxy so:
In diesem Feld
tun Sie Folgendes
Proxy-Name
Eingeben: helloworld_apikey
Projektbasispfad
Ändern zu: /helloapikey
Der Projektbasispfad ist Teil der URL, die für Anfragen an den API-Proxy verwendet wird.
Beschreibung
Eingeben: hello world protected by API key
Ziel (vorhandene API)
Eingeben: http://mocktarget.apigee.net
Dies definiert die Ziel-URL, die Apigee für eine Anfrage an den API-Proxy aufruft. Dieses Ziel gibt einfach eine einfache Antwort zurück: Hello, Guest!.
Klicken Sie auf Weiter.
Wählen Sie auf der Seite Allgemeine Richtlinien die Option API-Schlüssel aus.
Mit dieser Option werden dem API-Proxy automatisch zwei Richtlinien hinzugefügt und ein API-Produkt erstellt, das zum Generieren des API-Schlüssels erforderlich ist.
Klicken Sie auf Weiter.
Prüfen Sie auf der Zusammenfassungsseite, ob eine Bereitstellungsumgebung ausgewählt ist. Klicken Sie dann auf Erstellen und bereitstellen.
Klicken Sie auf Proxy bearbeiten, um die Übersichtsseite für den API-Proxy aufzurufen.
Richtlinien ansehen
Klicken Sie im API-Proxy-Editor auf den Tab Develop. Sie werden sehen, dass dem Anfrageablauf des API-Proxys zwei Richtlinien hinzugefügt wurden:
API-Schlüssel überprüfen: Prüft den API-Aufruf, um zu gewährleisten, dass ein gültiger API-Schlüssel vorhanden ist (als Abfrageparameter gesendet).
Abfrage-Param-API-Schlüssel entfernen: Eine Richtlinie zum Zuweisen von Nachrichten, die den API-Schlüssel nach der Überprüfung entfernt, damit er nicht unnötig weitergegeben und offengelegt wird.
Klicken Sie auf das Symbol „API-Schlüsselrichtlinie überprüfen“ in der Ablaufansicht und sehen Sie sich die XML-Konfiguration der Richtlinie in der unteren Codeansicht an. Das Element <APIKey> teilt der Richtlinie mit, wo es bei einem Aufruf nach dem API-Schlüssel suchen soll. Standardmäßig wird in der HTTP-Anfrage nach dem Schlüssel als Abfrageparameter mit dem Namen apikey gesucht:
<APIKey ref="request.queryparam.apikey" />
Der Name apikey ist beliebig. Dies kann ein beliebiges Attribut sein, das den API-Schlüssel enthält.
Versuchen Sie, die API aufzurufen
In diesem Schritt führen Sie einen erfolgreichen API-Aufruf direkt an den Zieldienst aus. Anschließend führen Sie einen fehlgeschlagenen Aufruf an den API-Proxy durch, um festzustellen, wie er durch die Richtlinien geschützt wird.
Erfolg
Rufen Sie in einem Webbrowser die folgende Adresse auf. Dies ist der Zieldienst, für den der API-Proxy zur Weiterleitung der Anfrage konfiguriert ist. Sie leiten ihn jedoch vorerst weiter:
http://mocktarget.apigee.net
Sie sollten folgende erfolgreiche Antwort erhalten: Hello, Guest!.
Dabei ist YOUR ENV_GROUP_HOSTNAME der Hostname der Umgebungsgruppe. Weitere Informationen finden Sie unter Hostname der Umgebungsgruppe finden.
Ohne die Richtlinie „API-Schlüssel überprüfen“ würde dieser Aufruf die gleiche Antwort wie der vorherige Aufruf liefern. In diesem Fall erhalten Sie jedoch die folgende Fehlermeldung:
{"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}
Das heißt richtigerweise, dass Sie keinen gültigen API-Schlüssel als Abfrageparameter übergeben haben.
In den nächsten Schritten erhalten Sie den erforderlichen API-Schlüssel.
API-Produkt hinzufügen
So fügen Sie ein API-Produkt über die Apigee-Benutzeroberfläche hinzu:
Wählen Sie Publish > API Products aus.
Klicken Sie auf +Erstellen.
Geben Sie die Produktdetails für Ihr API-Produkt ein.
Feld
Beschreibung
Name
Interner Name des API-Produkts. Geben Sie im Namen keine Sonderzeichen an. Hinweis: Sobald der API-Produkt erstellt wurde, können Sie den Namen nicht mehr ändern.
Anzeigename
Anzeigename für das API-Produkt. Der Anzeigename wird in der Benutzeroberfläche verwendet und kann jederzeit bearbeitet werden. Wenn keine Angabe erfolgt, wird der Wert "Name" verwendet. Dieses Feld wird automatisch mit dem Wert "Name" ausgefüllt. können Sie den Inhalt bearbeiten oder löschen. Der Anzeigename kann Sonderzeichen enthalten.
Beschreibung
Beschreibung des API-Produkts.
Umgebung
Umgebungen, auf die das API-Produkt Zugriff gewährt. Beispiel: test oder prod.
Zugriff
Wählen Sie Öffentlich aus.
Zugriffsanfragen automatisch genehmigen
Aktivieren Sie die automatische Genehmigung von Schlüsselanfragen für dieses API-Produkt aus einer beliebigen Anwendung.
Kontingent
Für diese Anleitung ignorieren.
Erlaubte OAuth-Bereiche
Für diese Anleitung ignorieren.
Klicken Sie unter Vorgänge auf VORGANG HINZUFÜGEN.
Wählen Sie im Feld „API-Proxy“ den soeben erstellten API-Proxy aus.
Geben Sie im Feld „Pfad“ „/“ ein. Ignorieren Sie die anderen Felder.
Klicken Sie auf Speichern, um den Vorgang zu speichern.
Klicken Sie auf Speichern, um das API-Produkt zu speichern.
Einen Entwickler und eine App zur Organisation hinzufügen
Als Nächstes simulieren wir den Workflow eines Entwicklers, der sich registriert, um Ihre APIs zu verwenden. Ein Entwickler hat eine oder mehrere Anwendungen, die Ihre APIs aufrufen, und jede Anwendung erhält einen eindeutigen API-Schlüssel.
Dadurch erhalten Sie als API-Anbieter eine bessere Kontrolle über den Zugriff auf Ihre APIs und detailliertere Berichte zum API-Traffic nach App.
Entwickler erstellen
So erstellen Sie einen Entwickler:
Wählen Sie im Menü Veröffentlichen > Entwickler aus. Hinweis: Wenn Sie sich noch auf dem Bildschirm „Entwicklung“ befinden, klicken Sie neben DEVELOP auf „<“, um das Wählen Sie Veröffentlichen > Entwickler aus.
Klicken Sie auf + Entwickler.
Geben Sie im Fenster "New Developer" Folgendes ein:
In diesem Feld
Eingabetaste
Vorname
Keyser
Nachname
Soze
Nutzername
keyser
E-Mail
keyser@example.com
Klicken Sie auf Erstellen.
App registrieren
So registrieren Sie eine Entwickler-App:
Wählen Sie Veröffentlichen > Apps aus.
Klicken Sie auf + App.
Geben Sie im Fenster "Neue Entwickler-App" Folgendes ein:
In diesem Feld
tun Sie Folgendes
Name und Anzeigename
Eingeben: keyser_app
Developer
Wählen Sie Keyser Soze (keyser@example.com) aus.
Callback URL und Hinweise
Leer lassen
Wählen Sie im Abschnitt "Anmeldedaten" die Option Nie aus.
Die Anmeldedaten für diese Anwendung laufen nie ab.
Klicken Sie auf Produkt hinzufügen.
Wählen Sie das Produkt aus, das Sie gerade erstellt haben.
Klicken Sie auf Erstellen.
API-Schlüssel abrufen
So rufen Sie den API-Schlüssel ab:
Klicken Sie auf der Seite „Apps“ (Veröffentlichen > Apps) auf keyser_app.
Klicken Sie auf der Seite keyser_app im Abschnitt Anmeldedaten neben Schlüssel auf Anzeigen. Beachten Sie, dass der Schlüssel mit dem von Ihnen erstellten Produkt verknüpft ist.
Wählen Sie den Schlüssel aus und kopieren Sie ihn. Sie benötigen sie im nächsten Schritt.
API mit einem Schlüssel aufrufen
Mit dem API-Schlüssel können Sie jetzt den API-Proxy aufrufen. Fügen Sie den API-Schlüssel wie gezeigt als Abfrageparameter ein. Der Abfrageparameter darf keine zusätzlichen Leerzeichen enthalten.
Wenn Sie jetzt den API-Proxy aufrufen, erhalten Sie diese Antwort: Hello,
Guest!
Glückwunsch! Sie haben einen API-Proxy erstellt und geschützt, indem ein gültiger API-Schlüssel in den Aufruf eingefügt wurde.
Es ist allgemein nicht empfehlenswert, einen API-Schlüssel als Abfrageparameter zu übergeben. Sie sollten stattdessen eine Übergabe im HTTP-Header vornehmen.
Best Practice: Übergeben des Schlüssels im HTTP-Header
In diesem Schritt werden Sie den Proxy so modifizieren, dass er nach dem API-Schlüssel in einem Header namens x-apikey sucht.
API-Proxy bearbeiten. Wählen Sie Develop > API Proxies > helloworld_apikey und dann die Ansicht Develop aus.
Wählen Sie die Richtlinie API-Schlüssel überprüfen aus und ändern Sie die Richtlinien-XML, damit die Richtlinie in der Datei header und nicht im queryparam nach den Richtlinien sucht:
<APIKey ref="request.header.x-apikey"/>
Speichern Sie den API-Proxy und stellen Sie ihn mit Bereitstellen bereit.
Führen Sie den folgenden API-Aufruf mit cURL aus, um den API-Schlüssel als Header mit dem Namen x-apikey zu übergeben. Denken Sie daran, den Namen Ihrer Organisation zu ersetzen.
Wenn Sie die Änderung vollständig vornehmen möchten, müssen Sie außerdem die Richtlinie „Nachricht zuweisen“ konfigurieren, um den Header anstelle des Abfrageparameters zu entfernen. Beispiel:
Der API-Schutz umfasst häufig zusätzliche Sicherheitsmaßnahmen wie OAuth, ein offenes Protokoll, das Anmeldedaten wie Nutzername und Passwort gegen Zugriffstokens austauscht. Zugriffstokens sind lange, zufällige Strings, die über eine Nachrichtenpipeline weitergegeben werden können, auch von der App zur Anwendung, ohne dabei die ursprünglichen Anmeldedaten zu beeinträchtigen.
Eine Übersicht über sicherheitsrelevante Themen finden Sie unter Proxy sichern.
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-08-28 (UTC)."],[[["\u003cp\u003eThis guide demonstrates how to secure APIs in Apigee and Apigee hybrid using API keys to prevent unauthorized access.\u003c/p\u003e\n"],["\u003cp\u003eThe tutorial walks through the process of creating an API proxy, configuring it to require API keys, and setting up policies to verify and remove the API key.\u003c/p\u003e\n"],["\u003cp\u003eIt explains how to create API products, developers, and developer apps, which are needed to generate API keys for accessing the protected API proxy.\u003c/p\u003e\n"],["\u003cp\u003eThe document illustrates how to test the API proxy by making calls with and without a valid API key, showcasing the security enforcement.\u003c/p\u003e\n"],["\u003cp\u003eIt highlights the best practice of passing API keys in the HTTP header (x-apikey) instead of as a query parameter for enhanced security, and details the required modifications to the API proxy.\u003c/p\u003e\n"]]],[],null,["# Secure an API by requiring API keys\n\n*This page\napplies to **Apigee** and **Apigee hybrid**.*\n\n\n*View [Apigee Edge](https://docs.apigee.com/api-platform/get-started/what-apigee-edge) documentation.*\n\n| **Note:** This video was recorded with a previous version of the Apigee UI; however, the concepts are still valid.\n\n\n**Video:** Check out this short video for an introduction on securing your API. \n**What you'll learn**\n\nThis tutorial explains how to:\n\n- Create an API proxy that requires an API key.\n- Create an API product, a developer, and a developer app.\n- Call your API with an API key. \nIt's important to protect your API from unauthorized access. One way to do that is with\nAPI keys.\n\nWhen an app makes a request to an API proxy that is configured to verify an API\nkey, the app must supply a valid key. At runtime, the\nVerify API Key policy checks that the supplied API key:\n\n- Is valid\n- Hasn't been revoked\n- Matches the API key for the API product that exposes the requested resources\n\nIf the key is valid, the request is allowed. If the key is invalid, the request results in\nan authorization failure. \n\nCreate the API proxy\n--------------------\n\n1. Go to the [Apigee UI](https://apigee.google.com) and sign in.\n2. Select your organization using the drop-down menu in the upper left corner of the UI.\n3. Click **Develop \\\u003e API Proxies** to display the API\n proxies list.\n\n4. Click **Create New** . \n5. In the Build a Proxy wizard, select **Reverse proxy (most common)**.\n6. Configure the proxy as follows: \n\n7. Click **Next**.\n8. On the **Common policies** page, select **API Key**. This option automatically adds two policies to your API proxy and creates an API product needed for generating the API key.\n9. Click **Next**.\n10. On the Summary page, make sure a deployment environment is selected, and click **Create and deploy**.\n11. Click **Edit proxy** to display the Overview page for the API proxy. \n\nView the policies\n-----------------\n\n1. In the API proxy editor, click the **Develop** tab. You'll see that two policies have been added to the request flow of the API proxy:\n - **Verify API Key** -- Checks the API call to make sure a valid API key is present (sent as a query parameter).\n - **Remove Query Param apikey** -- An Assign Message policy that removes the API key after it's checked, so that it doesn't get passed around and exposed unnecessarily.\n2. Click the Verify API Key policy icon in the flow view, and look at the policy's XML\n configuration in the lower code view. The `\u003cAPIKey\u003e` element tells the\n policy where it should look for the API key when the call is made. By default, it looks\n for the key as a query parameter called `apikey` in the HTTP request:\n\n ```text\n \u003cAPIKey ref=\"request.queryparam.apikey\" /\u003e\n ```\n\n The name `apikey` is arbitrary and can be any property that contains the\nAPI key. \n\nTry to call the API\n-------------------\n\nIn this step, you'll make a successful API call directly to the target service, then\nyou'll make an unsuccessful call to the API proxy to see how it's being protected by the\npolicies.\n\n1. **Success**\n\n In a web browser, go to the following address. This is the target service that the API\n proxy is configured to forward the request to, but you'll hit it directly for now: \n\n ```text\n http://mocktarget.apigee.net\n ```\n\n You should get this successful response: `Hello, Guest!`\n2. **Failure**\n\n Now try to call your API proxy: \n\n ```\n curl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey\n ```\n\n where \u003cvar translate=\"no\"\u003eYOUR ENV_GROUP_HOSTNAME\u003c/var\u003e is the environment group hostname. See\n [Find the environment group hostname](/apigee/docs/api-platform/get-started/test-proxy#find-the-environment-group-hostname).\n | **Note:** If you have trouble calling the proxy, you may need to add the `Host` header, as described in [Deploy a sample proxy](/apigee/docs/api-platform/get-started/deploy-sample).\n\n Without the Verify API Key policy, this call would give you the same response as the\n previous call. But in this case, you should get the following error response: \n\n ```gdscript\n {\"fault\":{\"faultstring\":\"Failed to resolve API Key variable request.queryparam.apikey\",\"detail\":{\"errorcode\":\"steps.oauth.v2.FailedToResolveAPIKey\"}}}\n ```\n\n which means, correctly, that you didn't pass a valid API key (as a query\n parameter).\n\nIn the next steps, you'll get the required API key. \n\nAdding an API product\n---------------------\n\nTo add an API product using the Apigee UI:\n\n1. Select **Publish \\\u003e API Products**.\n2. Click **+Create**.\n3. Enter the Product Details for your API product. \n\n4. In the **Operations** section, click **ADD AN OPERATION**.\n5. In the API Proxy field, select the API proxy you just created.\n6. In the Path field, enter \"/\". Ignore the other fields.\n7. Click **Save** to save the Operation.\n8. Click **Save** to save the API product. \n\nAdd a developer and app to your\norganization\n--------------------------------------------\n\nNext, we're going to simulate the workflow of a developer signing up to use your APIs. A\ndeveloper will have one or more apps that call your APIs, and each app gets a unique API key.\nThis gives you, the API provider, more granular control over access to your APIs and more\ngranular reporting on API traffic by app.\n\n### Create a developer\n\nTo create a developer:\n\n1. Select **Publish \\\u003e Developers** in the menu. \n **Note** : If you are still in the Develop screen, click on the **\"\\\u003c\"** by **DEVELOP** to display the menu and select **Publish \\\u003e Developers**\n2. Click **+ Developer**.\n3. Enter the following in the New Developer window: \n\n4. Click **Create**.\n\n### Register an app\n\nTo register a developer app:\n\n1. Select **Publish \\\u003e Apps**.\n2. Click **+ App**.\n3. Enter the following in the New Developer App window: \n\n4. In the Credentials section, select **Never**. The credentials for this app will never expire.\n5. Click **Add product**.\n6. Select the product you just created.\n7. Click **Create**.\n\n### Get the API key\n\nTo get the API key:\n\n1. On the Apps page (Publish \\\u003e Apps), click **keyser_app**.\n2. On the **keyser_app** page, click **Show** next to **Key** in the **Credentials** section. Notice that the key is associated with the product you created. \n3. Select and copy the key. You'll use it in the next step. \n\nCall the API with a key\n-----------------------\n\nNow that you have an API key, you can use it to call the API proxy. Paste the API key as\nshown, as a query parameter. Make sure there are no extra\nspaces in the query parameter. \n\n```\ncurl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey?apikey=your_api_key\n```\n\nNow when you call the API proxy, you should get this response: `Hello,\nGuest!`\n\nCongratulations! You've created an API proxy and protected it by requiring that a valid\nAPI key be included in the call.\n\nNote that in general it's not good practice to pass an API key as a query parameter. You\nshould consider [passing it in the HTTP\nheader instead](#extracreditpassingthekeyinthehttpheader). \n\nBest practice: Passing the key in the HTTP\nheader\n-------------------------------------------------\n\n| **Note:** It's a good practice to pass the API key in a header rather than in a query parameter. Query parameters appear in the browser history and network logs, which could present a security risk. Headers do not appear in the browser history and network logs.\n\nIn this step, you will modify the proxy to look for the API key in a header called `x-apikey`.\n\n1. Edit the API proxy. Select **Develop \\\u003e API Proxies \\\u003e\n helloworld_apikey** , and go to the **Develop** view.\n2. Select the **Verify API Key** policy, and modify the policy XML to tell\n the policy to look in the `header` rather than in the\n `queryparam`:\n\n ```text\n \u003cAPIKey ref=\"request.header.x-apikey\"/\u003e\n ```\n3. **Save** the API proxy and use **Deploy** to deploy it.\n4. Make the following API call using cURL to pass the API key as a header called\n `x-apikey`. Don't forget to substitute your organization name.\n\n ```scdoc\n curl -v -H \"x-apikey: {api_key_goes_here}\" http://YOUR_ENV_GROUP_HOSTNAME/helloapikey\n ```\n\nNote that to fully complete the change, you'd also need to configure the Assign Message\npolicy to remove the header instead of the query parameter. For example: \n\n```\n\u003cRemove\u003e\n \u003cHeaders\u003e\n \u003cHeader name=\"x-apikey\"/\u003e\n \u003c/Headers\u003e\n\u003c/Remove\u003e\n```\n| **Note:** You could also pass the API key as a form parameter. If you did, the Verify API Key policy would be configured like this: \n|\n| ```scdoc\n| \u003cAPIKey ref=\"request.formparam.{api_key_goes_here}\"/\u003e\n``` \n\nRelated topics\n--------------\n\nHere are some topics related to API products and keys:\n\n- [Managing API products](/apigee/docs/api-platform/publish/create-api-products)\n- [API keys](/apigee/docs/api-platform/security/api-keys)\n- [Registering app\n developers](/apigee/docs/api-platform/publish/adding-developers-your-api-product)\n- [Register apps and\n manage API keys](/apigee/docs/api-platform/publish/creating-apps-surface-your-api)\n- [Verify API Key\n policy](/apigee/docs/api-platform/reference/policies/verify-api-key-policy)\n\nAPI protection often involves additional security such as [OAuth](/apigee/docs/api-platform/security/oauth/oauth-home), an\nopen protocol that exchanges credentials (like username and password) for\naccess tokens. Access tokens are long, random strings that can be passed through a message\npipeline, including from app to app, without compromising the original credentials.\n\nFor an overview of security-related topics, see\n[Securing a proxy](https://cloud.google.com/apigee/docs/api-platform/security/api-security)."]]