DEV Community

Cover image for Azure APIs nutzen: Eine Anleitung
Emre Demir
Emre Demir

Posted on • Originally published at apidog.com

Azure APIs nutzen: Eine Anleitung

TL;DR

Azure APIs erlauben programmatischen Zugriff auf Microsoft Cloud-Dienste wie Storage, Compute, Datenbanken und KI. Die Authentifizierung erfolgt über Azure Active Directory (Entra ID) mittels Zugriffstoken. REST-Endpunkte werden mit diesem Token angesprochen. Zum Testen und Dokumentieren empfiehlt sich Apidog: Anfragen speichern, Antwort-Schemas validieren, Sammlungen mit dem Team teilen.

Teste Apidog noch heute

Einführung

Microsoft Azure bietet über 200 Dienste, jeder mit eigener API. Die meisten Entwickler nutzen einige davon – etwa Azure Blob Storage für Dateien, Azure Functions für Serverless Computing oder Azure OpenAI für LLMs.

Die Herausforderung: Azure-Dokumentation ist riesig und fragmentiert. Es kann lange dauern, den korrekten Endpunkt und Authentifizierungsweg zu finden – Fehler wie 401 Unauthorized sind häufig.

Dieser Leitfaden fokussiert auf die APIs, die in der Praxis relevant sind. Sie lernen Authentifizierungsflows, typische Fehlerquellen und wie Sie Ihre Azure-Integrationen testen, bevor Sie sie deployen.

💡 Tipp: Mit Apidog können Sie Azure-Integrationen entwerfen, testen und dokumentieren. Speichern Sie API-Aufrufe als Sammlungen, nutzen Sie Umgebungsvariablen für verschiedene Abos und validieren Sie Schemas – Konfigurationsfehler werden früh erkannt.

Testen Sie Ihre Azure APIs mit Apidog – kostenlos

Am Ende dieses Leitfadens können Sie:

  • Azure-Authentifizierung korrekt einrichten (die häufigste Fehlerquelle)
  • Azure Storage, Compute und KI-APIs mit funktionierenden Beispielen aufrufen
  • Typische Azure API-Fehler debuggen
  • Azure-Integrationen mit Apidog testen und dokumentieren

Das Authentifizierungsproblem (und wie man es löst)

Jeder Azure API-Aufruf benötigt Authentifizierung. Fehler an dieser Stelle blockieren alles Weitere.

Authentifizierungsablauf von Azure AD

Azure Active Directory / Microsoft Entra ID

Azure verwendet OAuth 2.0 für API-Authentifizierung. Sie geben kein Passwort weiter, sondern senden ein Zugriffstoken.

Vorgehen:

  1. Anwendung in Azure AD (Entra ID) registrieren
  2. Client-ID und Client-Secret generieren
  3. Zugriffstoken am Token-Endpunkt abholen
  4. Token in API-Aufruf einbinden

Schritt 1: Anwendung registrieren

  • Azure Portal → Microsoft Entra ID → App-Registrierungen → Neue Registrierung
  • Name vergeben, „Nur Konten in diesem Organisationsverzeichnis“ wählen
  • Nach Registrierung erhalten Sie:
    • Anwendungs-ID: 12345678-1234-1234-1234-123456789abc
    • Verzeichnis-ID: 87654321-4321-4321-4321-cba987654321

Schritt 2: Client-Secret erstellen

  • App-Registrierung → Zertifikate & Geheimnisse → Neuer Client-Secret
  • Wert sofort kopieren (wird nicht erneut angezeigt)
    • Beispiel: abc123~DEF456-ghi789

Schritt 3: Berechtigungen zuweisen

  • API-Berechtigungen → Berechtigung hinzufügen
    • Für Storage: „Azure Storage“ → „user_impersonation“
    • Für Management APIs: „Azure Service Management“ → „user_impersonation“

Schritt 4: Zugriffstoken abholen

curl -X POST "https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "client_id={client-id}" \
  -d "client_secret={client-secret}" \
  -d "scope=https://storage.azure.com/.default" \
  -d "grant_type=client_credentials"
Enter fullscreen mode Exit fullscreen mode

Antwort:

{
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIs...",
  "expires_in": 3599,
  "token_type": "Bearer"
}
Enter fullscreen mode Exit fullscreen mode

Schritt 5: Token verwenden

curl -X GET "https://youraccount.blob.core.windows.net/container?restype=container&comp=list" \
  -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIs..." \
  -H "x-ms-version: 2023-01-03"
Enter fullscreen mode Exit fullscreen mode

Azure SDK statt rohem HTTP verwenden

Für Produktionscode empfiehlt sich das Azure SDK. Es übernimmt Token-Refresh, Wiederholungen und Serialisierung.

import { DefaultAzureCredential } from '@azure/identity'
import { BlobServiceClient } from '@azure/storage-blob'

// Nutzt automatisch Azure CLI-Login oder Umgebungsvariablen
const credential = new DefaultAzureCredential()
const blobServiceClient = new BlobServiceClient(
  'https://youraccount.blob.core.windows.net',
  credential
)

// Container auflisten
for await (const container of blobServiceClient.listContainers()) {
  console.log(container.name)
}
Enter fullscreen mode Exit fullscreen mode

Für Tests, Debugging und Dokumentation ist Verständnis der rohen HTTP-Aufrufe essentiell – hier setzt Apidog an.

Azure Storage APIs

Azure Storage ist der am häufigsten genutzte Dienst. Typen:

  • Blob Storage: Dateien, Bilder, Backups
  • Queue Storage: Nachrichtenwarteschlangen
  • Table Storage: NoSQL Schlüssel-Wert-Speicher
  • File Storage: SMB-Dateifreigaben

Blob Storage API

Container auflisten:

GET https://{account}.blob.core.windows.net/?comp=list
Authorization: Bearer {token}
x-ms-version: 2023-01-03
Enter fullscreen mode Exit fullscreen mode

Container erstellen:

PUT https://{account}.blob.core.windows.net/{container}?restype=container
Authorization: Bearer {token}
x-ms-version: 2023-01-03
Enter fullscreen mode Exit fullscreen mode

Blob hochladen:

PUT https://{account}.blob.core.windows.net/{container}/{blob}
Authorization: Bearer {token}
x-ms-version: 2023-01-03
Content-Type: text/plain

Hello, Azure Blob Storage!
Enter fullscreen mode Exit fullscreen mode

Blob herunterladen:

GET https://{account}.blob.core.windows.net/{container}/{blob}
Authorization: Bearer {token}
x-ms-version: 2023-01-03
Enter fullscreen mode Exit fullscreen mode

Testen mit Apidog

Azure Storage APIs erfordern spezielle Header. Mit Apidog können Sie:

  1. Anfragen als wiederverwendbare Requests speichern
  2. Umgebungsvariablen für Kontonamen & Token nutzen
  3. Antwort-Schemas validieren

Azure Compute APIs

Azure Compute steuert VMs, Container und Functions.

Azure Functions API

Funktionen einer Function App auflisten:

GET https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{rg}/providers/Microsoft.Web/sites/{app-name}/functions?api-version=2023-01-01
Authorization: Bearer {management-token}
Enter fullscreen mode Exit fullscreen mode

HTTP-Trigger-Funktion auslösen:

POST https://{app-name}.azurewebsites.net/api/{function-name}
Content-Type: application/json

{
  "name": "Azure",
  "message": "Hello from API"
}
Enter fullscreen mode Exit fullscreen mode

Funktionsschlüssel abrufen:

POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{rg}/providers/Microsoft.Web/sites/{app-name}/functions/{function-name}/listKeys?api-version=2023-01-01
Authorization: Bearer {management-token}
Enter fullscreen mode Exit fullscreen mode

Virtual Machines API

VMs auflisten:

GET https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Compute/virtualMachines?api-version=2023-07-01
Authorization: Bearer {management-token}
Enter fullscreen mode Exit fullscreen mode

VM starten:

POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{rg}/providers/Microsoft.Compute/virtualMachines/{vm-name}/start?api-version=2023-07-01
Authorization: Bearer {management-token}
Enter fullscreen mode Exit fullscreen mode

VM stoppen:

POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{rg}/providers/Microsoft.Compute/virtualMachines/{vm-name}/powerOff?api-version=2023-07-01
Authorization: Bearer {management-token}
Enter fullscreen mode Exit fullscreen mode

Azure KI-Dienste APIs

Azure bietet OpenAI-Modelle und kognitive Dienste für Vision, Speech und Language.

Azure OpenAI API

Vervollständigungen abfragen:

POST https://{resource-name}.openai.azure.com/openai/deployments/{deployment-id}/chat/completions?api-version=2024-02-15-preview
api-key: {your-api-key}
Content-Type: application/json

{
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "What is Azure?"}
  ],
  "max_tokens": 500
}
Enter fullscreen mode Exit fullscreen mode

Bereitstellungen listen:

GET https://{resource-name}.openai.azure.com/openai/deployments?api-version=2024-02-15-preview
api-key: {your-api-key}
Enter fullscreen mode Exit fullscreen mode

Cognitive Services API

Textanalyse – Sentiment:

POST https://{resource-name}.cognitiveservices.azure.com/text/analytics/v3.1/sentiment
Ocp-Apim-Subscription-Key: {subscription-key}
Content-Type: application/json

{
  "documents": [
    {
      "id": "1",
      "language": "en",
      "text": "I love Azure APIs. They work great!"
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

Computer Vision – Bildanalyse:

POST https://{resource-name}.cognitiveservices.azure.com/vision/v3.2/analyze?visualFeatures=Description,Tags
Ocp-Apim-Subscription-Key: {subscription-key}
Content-Type: application/octet-stream

[binäre Bilddaten]
Enter fullscreen mode Exit fullscreen mode

Azure APIs mit Apidog testen

Azure APIs benötigen korrekte Authentifizierung und Header. Manuelles Testen mit curl ist fehleranfällig. Mit Apidog optimieren Sie den Ablauf:

1. Umgebungsmanagement

Für verschiedene Endpunkte Umgebungen anlegen:

# Entwicklung
MANAGEMENT_TOKEN: eyJ0eXAiOiJKV1Qi...
STORAGE_ACCOUNT: devstorage
OPENAI_RESOURCE: dev-openai

# Produktion
MANAGEMENT_TOKEN: eyJ0eXAiOiJKV1Qi...
STORAGE_ACCOUNT: prodstorage
OPENAI_RESOURCE: prod-openai
Enter fullscreen mode Exit fullscreen mode

2. Pre-Request-Skripte für Token-Aktualisierung

Azure-Token laufen nach 1 Stunde ab. Beispiel für ein Pre-Request-Skript:

// Überprüfen, ob Token abgelaufen ist
const tokenExpiry = pm.environment.get('token_expiry')
const now = Date.now() / 1000

if (!tokenExpiry || now >= tokenExpiry) {
  // Neues Token anfordern
  const response = await pm.sendRequest({
    url: 'https://login.microsoftonline.com/' + pm.environment.get('tenant_id') + '/oauth2/v2.0/token',
    method: 'POST',
    header: { 'Content-Type': 'application/x-www-form-urlencoded' },
    body: {
      mode: 'urlencoded',
      urlencoded: [
        { key: 'client_id', value: pm.environment.get('client_id') },
        { key: 'client_secret', value: pm.environment.get('client_secret') },
        { key: 'scope', value: 'https://management.azure.com/.default' },
        { key: 'grant_type', value: 'client_credentials' }
      ]
    }
  })

  const data = response.json()
  pm.environment.set('management_token', data.access_token)
  pm.environment.set('token_expiry', now + data.expires_in)
}
Enter fullscreen mode Exit fullscreen mode

3. Antwortvalidierung

Antworten auf erwartete Struktur prüfen:

// Testen, dass die Blob-Liste die erwartete Struktur zurückgibt
pm.test('Antwort enthält Container', () => {
  const xml = pm.response.text()
  pm.expect(xml).to.include('<Containers>')
  pm.expect(xml).to.include('<Container>')
})

pm.test('Antwort ist gültiges XML', () => {
  pm.response.to.be.ok
  pm.response.to.have.header('Content-Type', 'application/xml')
})
Enter fullscreen mode Exit fullscreen mode

Beginnen Sie, Azure APIs mit Apidog zu testen – kostenlos

Häufige Fehler und wie man sie behebt

401 Nicht autorisiert

Ursache: Token ungültig oder abgelaufen.

Lösung:

  1. Token-Gültigkeit prüfen (expires_in)
  2. Scope prüfen (muss zur API passen)
  3. App-Registrierung auf korrekte Berechtigungen prüfen

403 Verboten

Ursache: Token gültig, aber Berechtigungen fehlen.

Lösung:

  1. Ressource im Azure Portal aufrufen
  2. Zugriffssteuerung (IAM) prüfen
  3. Rollenzuweisung für Dienstprinzipal hinzufügen

404 Nicht gefunden

Ursache: Falscher Endpunkt oder Ressource fehlt.

Lösung:

  1. Ressourcennamen in URL prüfen
  2. API-Version (Abfrageparameter) prüfen
  3. Ressourcengruppe und Existenz verifizieren

429 Zu viele Anfragen

Ursache: Ratenbegrenzung von Azure erreicht.

Lösung:

  1. Exponentielles Backoff implementieren
  2. Header x-ms-ratelimit-remaining prüfen
  3. Anfragen bündeln
async function callWithRetry(fn, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn()
    } catch (error) {
      if (error.statusCode === 429) {
        const delay = Math.pow(2, i) * 1000
        await new Promise(resolve => setTimeout(resolve, delay))
      } else {
        throw error
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Alternativen und Vergleiche

Merkmal Azure APIs AWS APIs GCP APIs
Authentifizierung Azure AD (OAuth 2.0) IAM (Sig v4) OAuth 2.0
SDK-Qualität Exzellent Exzellent Exzellent
Dokumentation Umfassend, aber verstreut Dienstspezifisch Dienstspezifisch
Ratenbegrenzung Pro Abonnement Pro Dienst Pro Projekt
Kostenloser Tarif 12 Monate + immer kostenlos 12 Monate Immer + Guthaben

Die Authentifizierung bei Azure ist komplexer als bei AWS (Sig v4), integriert sich aber besser in Unternehmens-Identity-Lösungen.

Anwendungsfälle in der Praxis

E-Commerce-Plattform: Shopify-Alternative nutzt Azure Blob Storage für Produktbilder, Azure Functions für Webhooks und Azure OpenAI für Beschreibungen. Alle API-Aufrufe werden vor Deployment in Apidog getestet.

Healthcare SaaS: System für medizinische Akten nutzt Azure Cosmos DB, Functions für HL7-Verarbeitung und Key Vault. API-Tests mit Schema-Validierung sichern HIPAA-Konformität.

KI-Startup: Entwickelt KI-Agenten mit Azure OpenAI, speichert Trainingsdaten in Azure Storage, deployt über Container Apps. Apidog simuliert Azure APIs lokal für Entwickler.

Zusammenfassung

Das haben Sie gelernt:

  • Azure-Authentifizierung läuft über OAuth 2.0-Token von Azure AD (Entra ID)
  • Storage APIs brauchen x-ms-version Header und Bearer-Token
  • Compute APIs nutzen den Resource Manager-Endpunkt
  • KI-Dienste fordern entweder API-Key oder AAD-Token
  • Testen & dokumentieren Sie Integrationen mit Apidog

Nächste Schritte:

  1. App in Azure AD registrieren, Credentials sichern
  2. Zugriffstoken via Client-Credentials-Flow anfordern
  3. Ersten Storage API-Call durchführen
  4. Call in Apidog speichern
  5. Eigene Azure API-Sammlung in Apidog anlegen

Testen Sie Azure APIs mit Apidog – kostenlos

FAQ

Was ist der Unterschied zwischen Azure AD und Microsoft Entra ID?

Es handelt sich um denselben Dienst. Azure Active Directory wurde 2023 in Microsoft Entra ID umbenannt. Beide Begriffe sind in der Dokumentation zu finden.

Wie erhalte ich einen API-Schlüssel für Azure OpenAI?

Azure Portal → Azure OpenAI → Ihre Ressource → Schlüssel und Endpunkt. Zwei Schlüssel verfügbar, beide nutzbar. Schlüssel regelmäßig neu generieren. Im Gegensatz zur öffentlichen OpenAI API ist ein Azure-Abonnement und eine Ressourcenbereitstellung erforderlich.

Was ist der Unterschied zwischen management.azure.com und dienstspezifischen Endpunkten?

management.azure.com ist der Resource Manager für CRUD an Ressourcen (z.B. VM erstellen). Dienstspezifische Endpunkte ({account}.blob.core.windows.net, {resource}.openai.azure.com) dienen der Ressourcennutzung. Jeder Endpunkt benötigt teils eigene Token.

Wie lange sind Azure-Zugriffstoken gültig?

Typisch 1 Stunde (expires_in). Sie können neue Token vor Ablauf anfordern. Nicht bei jedem API-Call ein neues Token abholen.

Kann ich verwaltete Identitäten statt Client-Secrets nutzen?

Ja. Für produktive Azure-Workloads empfohlen. Keine Secret-Speicherung nötig. Funktioniert mit VMs, Functions, Container Apps, AKS. Lokal: Azure CLI (az login) oder Umgebungsvariablen mit Secrets.

Warum funktioniert mein API-Call in Postman, aber nicht im Code?

Header prüfen – Azure APIs sind case-sensitiv. Postman fügt evtl. Header hinzu, die im Code fehlen. Vergleichen Sie Roh-Anfrage aus Postman und Code (z.B. mit Fiddler oder Apidog Request Inspector).

Wie teste ich Azure APIs lokal ohne Azure-Abonnement?

Vollständiges Testen ohne Abo nicht möglich, aber lokale Emulatoren helfen:

  • Azurite für Storage
  • Azure Functions Core Tools für Functions
  • Apidog kann API-Antworten simulieren

Was ist der beste Weg zur Fehlerbehandlung bei Azure APIs?

Azure liefert detaillierte Fehler-JSONs. Prüfen Sie error.code und error.message. Häufige Codes:

  • AuthenticationFailed – Token prüfen
  • ResourceNotFound – Ressourcennamen prüfen
  • OperationNotAllowed – Abonnementlimits prüfen

Top comments (0)