Nicht autorisierte Fehler (401) beim Aufrufen von APIs
Gemäß dem Artikel zur Azure API Management-Problembehandlungsreihe ist dies das dritte Szenario des Labs. Stellen Sie sicher, dass Sie die Anweisungen zum Einrichten des Labs wie folgt befolgt haben, um das Problem neu zu erstellen.
Ursprüngliche Produktversion: API Management Service
Ursprüngliche KB-Nummer: 4464930
Hinweis
Waren diese Informationen hilfreich? Wir schätzen Ihr Feedback. Bitte verwenden Sie die Schaltfläche Feedback auf dieser Seite, um uns mitzuteilen, wie gut Ihnen dieser Artikel gefallen hat oder wie wir ihn verbessern können.
Problembeschreibung
Die Echo-API löste plötzlich verschiedene Typen von HTTP 401 - Unauthorized-Fehlern aus, während die vorgänge darunter aufgerufen wurden. Die Vorgänge "Ressource erstellen" und "Ressource abrufen " zeigen die folgende Fehlermeldung an:
{
"statusCode": 401,
"message": "Zugriff aufgrund eines ungültigen Abonnementschlüssels verweigert. Stellen Sie sicher, dass Sie einen gültigen Schlüssel für ein aktives Abonnement angeben."
}
In der Erwägung, dass die restlichen Vorgänge angezeigt werden
{
"statusCode": 401,
"message": "Zugriff aufgrund fehlender Abonnementschlüssel verweigert. Stellen Sie sicher, dass Sie den Abonnementschlüssel einschließen, wenn Sie Anforderungen an eine API senden."
}
Der erwartete HTTP-Antwortcode für alle Vorgänge ist 200. Der Antworttext variiert jedoch, da die Back-End-API immer alles, was Sie als Anforderungstext senden, zusätzlich zu Headern wiederholt.
Schritte zur Problembehandlung
Um Zugriff auf die API zu erhalten, müssen Entwickler zuerst ein Produkt abonnieren. Wenn sie ein Abonnement abonnieren, erhalten sie einen Abonnementschlüssel, der als Teil des Anforderungsheaders gesendet wird, der für jede API in diesem Produkt geeignet ist. Ocp-Apim-Subscription-Key ist der Anforderungsheader, der für den Abonnementschlüssel des Produkts gesendet wird, das dieser API zugeordnet ist. Der Schlüssel wird automatisch ausgefüllt.
Bezüglich des Fehlers Zugriff aufgrund eines ungültigen Abonnementschlüssels verweigert. Stellen Sie sicher, dass Sie einen gültigen Schlüssel für ein aktives Abonnement angeben. Es ist klar, dass Sie beim Aufrufen der Vorgänge Ressource erstellen und Ressource abrufen einen falschen Wert des Anforderungsheaders Ocp-Apim-Subscription-Key senden.
Sie können Ihren Abonnementschlüssel für ein bestimmtes Produkt im APIM-Entwicklerportal überprüfen, indem Sie nach der Anmeldung zur Profilseite navigieren, wie unten gezeigt.
Wählen Sie die Schaltfläche Anzeigen aus, um die Abonnementschlüssel für die jeweiligen Produkte anzuzeigen, die Sie abonniert haben.
Wenn Sie die Header überprüfen, die von der Registerkarte Test gesendet werden, stellen Sie fest, dass der Wert des Ocp-Apim-Subscription-Key-Anforderungsheaders falsch ist. Sie fragen sich vielleicht, wie das möglich ist, da APIM diesen Anforderungsheader automatisch mit dem richtigen Abonnementschlüssel füllt.
Sehen wir uns die Front-End-Definition der Vorgänge Ressource erstellen und Abrufen von Ressourcen auf der Registerkarte Entwurf an. Bei sorgfältiger Überprüfung würden Sie feststellen, dass diese Vorgänge einen falschen hartcodierten Wert des Ocp-Apim-Subscription-Key-Anforderungsheaders erhalten, der auf der Registerkarte Header hinzugefügt wurde.
Sie können es entfernen. Dadurch sollte das Problem mit dem ungültigen Abonnementschlüssel behoben werden, aber trotzdem wird ein Fehler aufgrund fehlender Abonnementschlüssel angezeigt.
Möglicherweise wird die folgende Fehlermeldung angezeigt:
HTTP/1.1 401 Nicht autorisiert
Inhaltslänge: 152
Content-Type: application/json
Datum: So, 29 Jul 2018 14:29:50 GMT
Vary: Origin WWW-Authenticate: AzureApiManagementKey realm="https://pratyay.azure-api.net/echo
,name="Ocp-Apim-Subscription-Key",type="header" {
"statusCode": 401,
"message": "Zugriff aufgrund fehlender Abonnementschlüssel verweigert. Stellen Sie sicher, dass Sie den Abonnementschlüssel einschließen, wenn Sie Anforderungen an eine API senden." }Wechseln Sie zu den Echo-APIsettings, und überprüfen Sie, ob sie mit einem der verfügbaren Produkte verknüpft sind. Wenn dies nicht der Fall ist, müssen Sie diese API einem Produkt zuordnen, damit Sie einen Abonnementschlüssel erhalten.
Entwickler müssen zunächst ein Produkt abonnieren, um Zugriff auf die API zu erhalten. Wenn sie ein Abonnement abonnieren, erhalten sie einen Abonnementschlüssel, der für jede API in diesem Produkt geeignet ist. Wenn Sie die APIM-instance erstellt haben, sind Sie bereits Administrator, sodass Sie standardmäßig jedes Produkt abonniert haben.
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.