Konfigurowanie weryfikacji klucza interfejsu API

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Możesz skonfigurować weryfikację klucza interfejsu API dla interfejsu API, dołączając zasadę typu Weryfikacja klucza interfejsu API. Jedynym wymaganym ustawieniem zasady weryfikacji klucza interfejsu API jest oczekiwana lokalizacja klucza interfejsu API w żądaniu klienta. Serwer proxy interfejsu API sprawdzi podaną lokalizację i wyodrębni klucz interfejsu API. Jeśli klucz interfejsu API nie znajduje się w oczekiwanej lokalizacji, wystąpi błąd i żądanie zostanie odrzucone. Klucze interfejsu API mogą znajdować się w parametrze zapytania, parametrze formularza lub nagłówku HTTP.

Na przykład poniższa konfiguracja zasad określa oczekiwaną lokalizację klucza jako parametr zapytania o nazwie apikey. Pomyślne żądanie musi przedstawiać klucz interfejsu API jako parametr zapytania 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żesz dołączyć do dowolnego interfejsu API, który chcesz chronić.

Obszerną dokumentację tego typu zasad znajdziesz w temacie dotyczącym weryfikacji klucza interfejsu API.

Serwery proxy interfejsu API automatycznie przekazują wszystkie nagłówki HTTP i parametry zapytań występujące w żądaniu. Dlatego po zweryfikowaniu klucza interfejsu API warto usunąć go z komunikatu, aby nie został przesłany przewodem do usługi backendu. Możesz to zrobić za pomocą 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 dotyczący zasad

Zasady należy dołączyć do procesu serwera proxy interfejsu API jako kroki przetwarzania. Dzięki zastosowaniu zasady do żądania PreFlow klucze interfejsu API są weryfikowane przy każdym żądaniu odebranego przez serwer proxy interfejsu API z aplikacji klienckiej. Po weryfikacji klucz interfejsu API jest usuwany z żądania wychodzącego.

Dołącz zasady do punktu ProxyEndpoint serwera proxy interfejsu API, który ma być chroniony, w ten sposób:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request>
      <Step><Name>APIKeyValidation</Name></Step>
      <Step><Name>StripApiKey</Name></Step>
    </Request>
  </PreFlow>

Gdy dołączysz 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 zwracany dla tego wywołania zawiera klucz klienta (klucz interfejsu API) i obiekt tajny. Wartość klucza klienta to wartość, której używasz dla klucza interfejsu API w żądaniu wysyłanym do chronionego interfejsu API.

Na przykład żądanie, które nie zawiera klucza interfejsu API, spowoduje błąd autoryzacji.

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

Komunikat o błędzie oznacza, że zasada została sprawdzona pod kątem klucza interfejsu API, ale nie znalazła prawidłowego klucza:

OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey

Jeśli jako parametr zapytania dołączony jest klucz klienta aplikacji, oczekiwany wynik to pomyślna autoryzacja:

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

Oczekiwanym wynikiem będzie pomyślna odpowiedź usługi pogodowej.

Zmodyfikowanie wartości klucza interfejsu API w żądaniu skutkuje błędem autoryzacji:

$ 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 zarejestrowanej w tej organizacji:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password