Konfigurowanie weryfikacji klucza interfejsu API

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

Aby skonfigurować weryfikację klucza interfejsu API, dołącz do interfejsu API zasadę typu Verify API Key. Jedynym wymaganym ustawieniem zasady Verify API Key jest oczekiwana lokalizacja klucza interfejsu API w żądaniu klienta. Serwer proxy interfejsu API sprawdzi określoną lokalizację i wyodrębni klucz interfejsu API. Jeśli klucz interfejsu API nie znajduje się w oczekiwanej lokalizacji, zostanie zgłoszony błąd, a żądanie zostanie odrzucone. Klucze interfejsu API mogą znajdować się w parametrze zapytania, parametrze formularza lub nagłówku HTTP.

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

Szczegółową dokumentację tego typu zasad znajdziesz w artykule dotyczącym zasad Verify API Key policy.

Serwery proxy interfejsów API automatycznie przekazują wszystkie nagłówki HTTP i parametry zapytania, które znajdują się w żądaniu. Dlatego po zweryfikowaniu klucza interfejsu API warto usunąć go z wiadomości, aby nie był wysyłany do usługi backendu. Możesz to zrobić za pomocą zasady typu AssignMessage w ten sposób:

<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>

Dołączanie zasad

Zasady muszą być dołączone do przepływu serwera proxy interfejsu API jako kroki przetwarzania. Dzięki zastosowaniu zasady do przepływu PreFlow żądania klucze interfejsu API są weryfikowane w każdym żądaniu otrzymywanym przez serwer proxy interfejsu API z aplikacji klienckiej. Po weryfikacji klucz interfejsu API jest usuwany z żądania wychodzącego.

Dołącz zasady do elementu ProxyEndpoint chronionego serwera proxy interfejsu API w ten sposób:

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

Po dołączeniu zasady wdróż serwer proxy interfejsu API.

Wysył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 w tym wywołaniu zawiera klucz klienta (klucz interfejsu API) i tajny klucz. Wartość klucza klienta to wartość, której używasz jako klucza interfejsu API w żądaniu do chronionego interfejsu API.

Na przykład żądanie, które nie zawiera klucza interfejsu API, powoduje niepowodzenie autoryzacji.

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

Komunikat o błędzie wskazuje, że zasada sprawdziła klucz interfejsu API, ale nie znalazła prawidłowego klucza:

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

Gdy klucz klienta aplikacji jest uwzględniony jako parametr zapytania, oczekiwany wynik to pomyślna autoryzacja:

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

Oczekiwany wynik to pomyślna odpowiedź z usługi pogodowej.

Zmiana wartości klucza interfejsu API w żądaniu powoduje niepowodzenie autoryzacji:

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

Wyniki:

OAuth Failure : Consumer Key is Invalid

Pamiętaj, że jako administrator organizacji możesz pobrać klucz klienta dowolnej aplikacji zarejestrowanej w organizacji:

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