Błędy nieautoryzowane (401) podczas wywoływania interfejsów API
Korzystając z artykułu z serii rozwiązywania problemów z usługą Azure API Management, jest to trzeci scenariusz laboratorium. Upewnij się, że wykonano instrukcje konfiguracji laboratorium zgodnie z tym, aby ponownie utworzyć problem.
Oryginalna wersja produktu: usługa API Management
Oryginalny numer KB: 4464930
Uwaga 16.
Czy ten artykuł był pomocny? Twoje dane wejściowe są dla nas ważne. Użyj przycisku Opinie na tej stronie, aby poinformować nas, jak dobrze działa ten artykuł lub jak możemy go ulepszyć.
Symptomy
Interfejs API echa nagle zaczął zgłaszać różne typy błędów HTTP 401 — Brak autoryzacji podczas wywoływania pod nim operacji. Operacje tworzenia zasobów i pobierania zasobów są wyświetlane w tym komunikacie o błędzie:
{
"statusCode": 401,
"message": "Odmowa dostępu z powodu nieprawidłowego klucza subskrypcji. Pamiętaj, aby podać prawidłowy klucz dla aktywnej subskrypcji".
}
Pozostałe operacje są wyświetlane
{
"statusCode": 401,
"message": "Odmowa dostępu z powodu braku klucza subskrypcji. Pamiętaj, aby uwzględnić klucz subskrypcji podczas wprowadzania żądań do interfejsu API.
}
Oczekiwany kod odpowiedzi HTTP dla wszystkich operacji wynosi 200, jednak treść odpowiedzi będzie się różnić, ponieważ interfejs API zaplecza zawsze powtarza wszystkie elementy wysyłane jako treść żądania oprócz nagłówków.
Kroki rozwiązywania problemów
Przed uzyskaniem dostępu do interfejsu API deweloperzy muszą najpierw zasubskrybować produkt. Gdy subskrybują, otrzymują klucz subskrypcji, który jest wysyłany jako część nagłówka żądania, który jest dobry dla dowolnego interfejsu API w tym produkcie. Ocp-Apim-Subscription-Key to nagłówek żądania wysyłany dla klucza subskrypcji produktu skojarzonego z tym interfejsem API. Klucz jest uzupełniany automatycznie.
Dotyczy błędu Odmowa dostępu z powodu nieprawidłowego klucza subskrypcji. Upewnij się, że podano prawidłowy klucz dla aktywnej subskrypcji, jest jasne, że wysyłasz nieprawidłową wartość nagłówka żądania Ocp-Apim-Subscription-Key podczas wywoływania operacji tworzenia zasobu i pobierania zasobów .
Klucz subskrypcji dla określonego produktu można sprawdzić w portalu deweloperów usługi APIM, przechodząc do strony Profil po zalogowaniu się, jak pokazano poniżej.
Wybierz przycisk Pokaż, aby wyświetlić klucze subskrypcji dla odpowiednich produktów, do których subskrybujesz.
Jeśli sprawdzasz nagłówki wysyłane z karty Test , zauważysz, że wartość nagłówka żądania Ocp-Apim-Subscription-Key jest nieprawidłowa. Być może zastanawiasz się, jak jest to możliwe, ponieważ usługa APIM automatycznie wypełnia ten nagłówek żądania odpowiednim kluczem subskrypcji.
Sprawdźmy definicję frontonu w obszarze Tworzenie zasobu i Pobieranie operacji zasobów na karcie Projektowanie. Podczas dokładnej inspekcji zauważysz, że te operacje mają nieprawidłową zakodowaną wartość nagłówka żądania Ocp-Apim-Subscription-Key dodanego na karcie Nagłówki.
Można go usunąć. Powinno to rozwiązać problem z nieprawidłowym kluczem subskrypcji, ale nadal występuje błąd braku klucza subskrypcji.
Może zostać wyświetlony następujący komunikat o błędzie:
HTTP/1.1 401 Brak autoryzacji
Długość zawartości: 152
Typ zawartości: application/json
Data: Sun, 29 Lip 2018 14:29:50 GMT
Różne: Origin WWW-Authenticate: AzureApiManagementKey realm=",https://pratyay.azure-api.net/echo
name="Ocp-Apim-Subscription-Key",type="header" {
"statusCode": 401,
"message": "Odmowa dostępu z powodu braku klucza subskrypcji. Pamiętaj, aby uwzględnić klucz subskrypcji podczas podejmowania żądań do interfejsu API." }Przejdź do interfejsu API echoustawienia i sprawdź, czy jest skojarzony z dowolnym z dostępnych produktów. Jeśli nie, musisz skojarzyć ten interfejs API z produktem, aby uzyskać klucz subskrypcji.
Przed uzyskaniem dostępu do interfejsu API deweloperzy muszą najpierw zasubskrybować produkt. Podczas subskrybowania otrzymują oni klucz subskrypcji działający dla każdego interfejsu API w tym produkcie. Jeśli utworzono wystąpienie usługi APIM, oznacza to, że użytkownik jest już administratorem, więc domyślnie posiada subskrypcję każdego produktu.
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.