Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Możesz skonfigurować weryfikację klucza interfejsu API dla interfejsu API, dołączając zasadę typu Zweryfikuj klucz interfejsu API. wymaganym ustawieniem zasady weryfikacji klucza interfejsu API jest oczekiwana lokalizacja klucza interfejsu API w na żądanie klienta. Serwer proxy interfejsu API sprawdzi podaną lokalizację i wyodrębni klucz interfejsu API. Jeśli w oczekiwanej lokalizacji nie ma klucza interfejsu API, zgłaszany jest błąd, a żądanie został odrzucony. Klucze interfejsu API mogą znajdować się w parametrze zapytania, parametrze formularza lub kodzie HTTP nagłówek.
Na przykład poniższa konfiguracja zasady definiuje oczekiwaną lokalizację klucza jako zapytanie
o nazwie apikey
. Udane żądanie musi przedstawiać klucz interfejsu API jako zapytanie
parametr dołączony do żądania, np. ?apikey=Y7yeiuhcbKJHD790
.
Aby zweryfikować klucze interfejsu API, utwórz tę zasadę:
<VerifyAPIKey name="APIKeyValidation"> <APIKey ref="request.queryparam.apikey"/> </VerifyAPIKey>
Tę zasadę można dołączyć do dowolnego interfejsu API, który chcesz chronić.
Pełną dokumentację tego typu znajdziesz w temacie dotyczącym zasad, Weryfikacja klucza interfejsu API .
Serwery proxy interfejsu API automatycznie przekazują wszystkie obecne nagłówki HTTP i parametry zapytania w związku z danym wnioskiem. Dlatego po zweryfikowaniu klucza interfejsu API warto usunąć go z Dzięki temu klucz interfejsu API nie jest przesyłany przewodem do usługi backendu. Dasz radę przy użyciu zasady typu AssignMessage:
<AssignMessage name="StripApiKey"> <DisplayName>Remove Query Param</DisplayName> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"></AssignTo> </AssignMessage>
Załącznik zasad
Zasady muszą być dołączone do procesu serwera proxy interfejsu API jako etapy przetwarzania. Zastosowanie zasad na żądanie PreFlow klucze interfejsu API są weryfikowane w przypadku każdego żądania otrzymanego przez serwer proxy interfejsu API aplikacji klienckiej. Po weryfikacji klucz interfejsu API jest usuwany z żądania wychodzącego.
Dołącz zasady do punktu końcowego ProxyEnd serwera proxy interfejsu API, aby były chronione w następujący sposób:
<ProxyEndpoint name="default"> <PreFlow> <Request> <Step><Name>APIKeyValidation</Name></Step> <Step><Name>StripApiKey</Name></Step> </Request> </PreFlow>
Po podłączeniu zasady wdróż serwer proxy interfejsu API.
Przesyłanie żądania z prawidłowym kluczem interfejsu API
Jako administrator w organizacji możesz pobrać klucz interfejsu API dowolnej aplikacji w ten sposób:
$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password
Profil aplikacji zwrócony dla tego wywołania zawiera klucz klienta (klucz interfejsu API) i tajny klucz. Wartość klucza klienta to wartość użyta jako klucz interfejsu API w żądaniu do zabezpieczonego API.
Na przykład żądanie, które nie zawiera klucza interfejsu API, skutkuje autoryzacją niepowodzenie.
$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282
Komunikat o błędzie wskazuje, że zasada nie znalazła prawidłowej wartości klucza interfejsu API klucz:
OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey
Jeśli jako parametr zapytania umieścisz klucz klienta aplikacji, oczekiwany wynik będzie taki: pomyślna autoryzacja:
$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"
Oczekiwany wynik to poprawna odpowiedź usługi pogodowej.
Zmiana wartości klucza interfejsu API w żądaniu powoduje autoryzację błąd:
$ curl http://{org_name}-test.apigee.net/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"
Wyniki w:
OAuth Failure : Consumer Key is Invalid
Pamiętaj, że jako administrator organizacji możesz pobrać klucz klienta dla dowolnej aplikacji zarejestrowana w organizacji:
$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password