Freigeben über


Nicht autorisierte Fehler (401) beim Aufrufen von APIs

In Bezug auf den Artikel zur Azure API Management Troubleshooting Series ist dies das dritte Szenario des Labors. Stellen Sie sicher, dass Sie die Anweisungen zum Einrichten des Labors entsprechend befolgt haben, um das Problem neu zu erstellen.

Ursprüngliche Produktversion: API-Verwaltungsdienst
Ursprüngliche KB-Nummer: 4464930

Notiz

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.

Symptome

Die Echo-API hat plötzlich begonnen, verschiedene Arten von HTTP 401 - Nicht autorisierte Fehler beim Aufrufen der Vorgänge unter ihr zu werfen. Beim Erstellen von Ressourcen - und Abrufen von Ressourcenvorgängen wird folgende Fehlermeldung angezeigt:

{
"statusCode": 401,
"message": "Zugriff verweigert aufgrund eines ungültigen Abonnementschlüssels. Stellen Sie sicher, dass Sie einen gültigen Schlüssel für ein aktives Abonnement bereitstellen."
}

Während die restlichen Vorgänge angezeigt werden

{
"statusCode": 401,
"message": "Zugriff verweigert aufgrund fehlender Abonnementschlüssel. Stellen Sie sicher, dass Sie beim Senden von Anforderungen an eine API den Abonnementschlüssel einschließen."
}

Der erwartete HTTP-Antwortcode für alle Vorgänge ist 200, der Antworttext variiert jedoch, da die Back-End-API immer das Echo anfordert, was Sie als Anforderungstext zusätzlich zu Headern senden.

Schritte zur Fehlersuche

  • Entwickler müssen ein Produkt zunächst abonnieren, um Zugriff auf die API zu erhalten. Wenn sie 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 eingefügt.

  • Bezüglich des Fehlers "Zugriff verweigert" aufgrund eines ungültigen Abonnementschlüssels. Stellen Sie sicher, dass Sie einen gültigen Schlüssel für ein aktives Abonnement bereitstellen, es ist klar, dass Sie einen falschen Wert des Ocp-Apim-Subscription-Key-Anforderungsheaders senden, während Sie Ressourcenvorgänge erstellen und Abrufen von Ressourcenvorgängen aufrufen.

  • Sie können Ihren Abonnementschlüssel für ein bestimmtes Produkt über das APIM-Entwicklerportal überprüfen, indem Sie nach der Anmeldung zur Profilseite navigieren, wie unten dargestellt.

  • Wählen Sie die Schaltfläche "Anzeigen " aus, um die Abonnementschlüssel für die jeweiligen Produkte anzuzeigen, die Sie abonniert haben.

    Screenshot der Abonnementschlüssel für die jeweiligen Produkte.

  • Wenn Sie die Kopfzeilen überprüfen, die von der Registerkarte "Test " gesendet werden, stellen Sie fest, dass der Wert des Ocp-Apim-Subscription-Key-Anforderungsheaders falsch ist. Vielleicht fragen Sie sich, wie es möglich ist, da APIM diesen Anforderungsheader automatisch mit dem richtigen Abonnementschlüssel ausfüllt.

  • Sehen wir uns die Frontend-Definition von "Ressource erstellen" und "Ressourcenvorgänge abrufen" auf der Registerkarte "Entwurf " an. Bei sorgfältiger Prüfung würden Sie feststellen, dass diese Vorgänge einen falschen hartcodierten Wert des Ocp-Apim-Subscription-Key-Anforderungsheaders erhalten haben, der auf der Registerkarte "Header" hinzugefügt wurde.

  • Sie können es entfernen, dies sollte das Problem mit dem ungültigen Abonnementschlüssel beheben, aber dennoch erhalten Sie einen Fehler beim Abonnementschlüssel.

    Es wird ggf. die folgende Fehlermeldung angezeigt:

    HTTP/1.1 401 Nicht autorisiert

    Inhaltslänge: 152
    Content-Type: application/json
    Datum: Sonne, 29 Juli 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 verweigert aufgrund fehlender Abonnementschlüssel. Stellen Sie sicher, dass Sie beim Senden von Anforderungen an eine API den Abonnementschlüssel einschließen." }

  • Wechseln Sie zu den Echo-APIsettings, und überprüfen Sie, ob sie einem der verfügbaren Produkte zugeordnet ist. Wenn dies nicht der Fall ist, müssen Sie diese API einem Produkt zuordnen, damit Sie einen Abonnementschlüssel erhalten.

    Entwickler müssen ein Produkt zunächst abonnieren, um Zugriff auf die API zu erhalten. Wenn sie ein Produkt abonnieren, erhalten sie einen Abonnementschlüssel, der für jede API in diesem Produkt gilt. Wenn Sie die APIM-Instanz erstellt haben, sind Sie bereits Administrator und haben dadurch standardmäßig alle Produkte abonniert.

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.