2017-02-14 8 views
5

Ich möchte eine C# Azure-Funktion mit HTTP-Trigger erstellen. Ich möchte es mit einem API Key sichern, einen separaten Schlüssel pro Kunde zur Verfügung stellen, und die Funktion sollte kundenspezifische Daten liefern, also muss sie identifizieren, wer sie anruft.Konfigurieren von kundenspezifischen API-Schlüsseln für Azure-Funktionen

Kann ich Azure-Funktions-API-Schlüssel verwenden, um den Kunden zu identifizieren, z. den Namen des Schlüssels erhalten, der übergeben wurde? Oder kann man innerhalb der azure-Funktion nicht wissen, mit welchem ​​Schlüssel die Anfrage authentifiziert wurde?

Wenn es eine Methode wie GetApiKeyName() gäbe, könnte ich den Schlüsselnamen gegen eine Liste von Kunden in meiner Datenbank überprüfen und verschiedene Daten zurückgeben, die auf dem Aufruf der Funktion basieren. z.B. Stellen Sie sich vor, ich habe ein Verkaufs-Tracking-System und meine Funktion ist /api/GetMonthlySales. Wenn Kunde 1 die Funktion mit seinem API-Schlüssel aufruft, sollten sie ihre monatlichen Verkäufe erhalten und wenn Kunde 2 sie anruft, erhalten sie einen anderen Betrag.

Wenn dies nicht möglich ist, bedeutet das, dass ich jedem Kunden zusätzliche Authentifizierungsdaten geben muss, damit diese an jeden Funktionsaufruf übergeben werden, z. eine Kundennummer und einen geheimen Schlüssel. Aber das schlägt den Zweck der Azure-Funktionen API-Schlüssel, richtig?

Ein ähnliches Szenario wäre, wenn ich Kunden berechnen möchte, wenn sie meine Funktion aufrufen. Wie identifiziere ich, welcher Kunde meine Funktion anruft?

+0

Für jetzt entschied ich mich, die Azure-Authentifizierung zu verwenden * und * diese gleichen API-Schlüssel in die db zu legen. Dann weiß ich, dass Azure dafür sorgt, dass nur jemand mit einem gültigen Schlüssel die Funktion aufruft, und ich schaue nach, wer das ist, indem ich den querystring 'code' -Parameter ergreife und ihn in der DB finde. Um neue Kunden bereitzustellen, muss ich sie beide zur Azure-Funktion auth hinzufügen und sie dann zu meiner DB hinzufügen. Hoffentlich wird es in Zukunft Unterstützung dafür geben, aber es ist nicht so schwerfällig, wenn Sie nur wenige Kunden haben. – Rory

Antwort

5

Rory,

Dies wird heute leider nicht unterstützt. Die Authentifizierung erfolgt auf der Grundlage des verwendeten Schlüssels, und Sie können einzelne Clientschlüssel widerrufen/erneuern, aber diese Informationen werden den Funktionen derzeit nicht angezeigt.

Es gibt einige Problemumgehungen wie das Zuordnen der Schlüssel mithilfe der Verwaltungs-API und das Abgleichen des Anforderungsschlüssels zum Identifizieren des Clients, aber sie sind umständlich und ineffizient.

Ich hatte ein Problem bei der Verfolgung dieser here und ich habe es gerade für die Triage wieder markiert, um zu sehen, ob wir das bald adressiert bekommen können.

+0

Dank Fabio, es wird sehr nützlich sein, wenn verfügbar. Ich mag die Portalunterstützung für die API-Schlüsselverwaltung; macht es einfach, Auth einzurichten, ohne viel Code zu schreiben. Aber auf jeden Fall muss die Authentifizierung in der Lage sein zu identifizieren, wer authentifiziert ist, sonst sind die Anwendungsfälle ziemlich begrenzt! – Rory

Verwandte Themen