Zabezpieczanie interfejsu API przez wymaganie kluczy interfejsu API

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

Czego się nauczysz

Z tego samouczka dowiesz się, jak:

  • Utwórz proxy interfejsu API, które wymaga klucza interfejsu API.
  • Dodaj usługę API.
  • Dodaj dewelopera i zarejestruj aplikację.
  • Wywołaj interfejs API za pomocą klucza interfejsu API.

Ważne jest, aby chronić interfejs API przed nieautoryzowanym dostępem. Jednym ze sposobów na to jest użycie kluczy interfejsu API (nazywanych też kluczami publicznymi, kluczami konsumenta lub kluczami aplikacji).

Gdy aplikacja wysyła żądanie do Twojego interfejsu API, musi podać prawidłowy klucz. W czasie działania zasada Weryfikacja klucza interfejsu API sprawdza, czy podany klucz interfejsu API:

  • jest prawidłowe,
  • nie został cofnięty,
  • Odpowiada kluczowi interfejsu API usługi API, która udostępnia żądane zasoby.

Jeśli klucz jest prawidłowy, prośba zostanie zaakceptowana. Jeśli klucz jest nieprawidłowy, żądanie spowoduje błąd autoryzacji.

W tym samouczku utworzysz proxy interfejsu API, które wymaga prawidłowego klucza interfejsu API, aby uzyskać do niego dostęp.

Czego potrzebujesz

  • Konto Apigee Edge. Jeśli jeszcze go nie masz, możesz się zarejestrować, postępując zgodnie z instrukcjami w artykule Tworzenie konta Apigee Edge.
  • przeglądarka internetowa do wywoływania interfejsu API.
  • (Sekcja dodatkowa, nie jest wymagana) cURL zainstalowany na komputerze, aby wykonywać wywołania interfejsu API z wiersza poleceń.

Tworzenie proxy interfejsu API

Informacje o parametrze „mocktarget”

Usługa mocktarget jest hostowana w Apigee i zwraca proste dane. Nie wymaga klucza interfejsu API ani tokena dostępu. Dostęp do niego możesz uzyskać w przeglądarce. Wypróbuj go, klikając ten przycisk:

http://mocktarget.apigee.net

Cel zwraca wartość Hello, Guest!. Użyj zasobu /help, aby wyświetlić stronę pomocy z informacjami o innych dostępnych zasobach interfejsu API.

  1. Otwórz stronę https://apigee.com/edge i zaloguj się.
  2. Aby przełączyć się na wybraną organizację, kliknij swoją nazwę użytkownika u góry paska nawigacyjnego z boku, aby wyświetlić menu profilu użytkownika, a następnie wybierz organizację z listy.

    wybierz organizację w menu profilu użytkownika;
  3. Na stronie docelowej kliknij Proxy interfejsów API, aby wyświetlić listę proxy interfejsów API.

    Menu interfejsów API Edge
  4. Kliknij + Serwer proxy.
    Przycisk Utwórz proxy
  5. Na stronie Utwórz serwer proxy kliknij Serwer proxy zwrotny (najczęstszy).
  6. Na stronie Szczegóły serwera proxy skonfiguruj serwer proxy w ten sposób:
    W tym polu wykonaj to
    Nazwa proxy Wpisz: helloworld_apikey
    Ścieżka podstawowa projektu

    Zmień na: /helloapikey

    Podstawowa ścieżka projektu jest częścią adresu URL używanego do wysyłania żądań do proxy interfejsu API.

    Uwaga: zalecenia Apigee dotyczące określania wersji interfejsu API znajdziesz w rozdziale Określanie wersji w e-booku Web API Design: The Missing Link.

    Istniejący interfejs API

    Wpisz: http://mocktarget.apigee.net

    Określa docelowy adres URL, który Apigee Edge wywołuje w żądaniu do serwera proxy interfejsu API.

    Opis Wpisz: hello world protected by API key
  7. Kliknij Dalej.
  8. Na stronie Common Policies (Typowe zasady) w sekcji Security: Authorization (Zabezpieczenia: autoryzacja) wybierz API Key (Klucz interfejsu API), a następnie kliknij Next (Dalej). Spowoduje to dodanie do serwera proxy interfejsu API 2 zasad.
  9. Na stronie Wirtualni hostowie wybierz domyślny i bezpieczny, a następnie kliknij Dalej. Wybór opcji default umożliwia wywoływanie interfejsu API za pomocą http://. Wybór opcji secure umożliwia wywoływanie interfejsu API za pomocą protokołu https://.
  10. Na stronie Podsumowanie upewnij się, że wybrane jest środowisko wdrażania test, a następnie kliknij Utwórz i wdróż.
  11. Wyświetli się potwierdzenie, że nowy proxy interfejsu API i produkt API zostały utworzone, a proxy interfejsu API zostało wdrożone w środowisku testowym.
  12. Kliknij Edytuj serwer proxy, aby wyświetlić stronę Przegląd serwera proxy interfejsu API.

Wyświetlanie zasad

  1. W edytorze proxy interfejsu API kliknij kartę Develop (Tworzenie). Zobaczysz, że do przepływu żądania serwera proxy interfejsu API zostały dodane 2 zasady:
    • Weryfikacja klucza interfejsu API: sprawdza wywołanie interfejsu API, aby upewnić się, że jest w nim prawidłowy klucz interfejsu API (przesłany jako parametr zapytania).
    • Remove Query Param apikey:zasada AssignMessage, która usuwa klucz API po jego sprawdzeniu, aby nie był przekazywany i niepotrzebnie ujawniany.
  2. W widoku przepływu kliknij ikonę zasady Verify API Key (Weryfikuj klucz interfejsu API) i w dolnym widoku kodu sprawdź konfigurację XML zasady. Element <APIKey> informuje zasadę, gdzie powinna szukać klucza interfejsu API podczas wywołania. Domyślnie szuka klucza jako parametru zapytania o nazwie apikey w żądaniu HTTP:

    <APIKey ref="request.queryparam.apikey" />

    Nazwa apikey jest dowolna i może być dowolną właściwością zawierającą klucz interfejsu API.

Próba wywołania interfejsu API

W tym kroku wykonasz wywołanie interfejsu API bezpośrednio do usługi docelowej, a potem wykonasz nieudane wywołanie do serwera proxy interfejsu API, aby sprawdzić, jak jest on chroniony przez zasady.

  1. Sukces

    W przeglądarce otwórz ten adres. Jest to usługa docelowa, do której proxy interfejsu API jest skonfigurowany do przekazywania żądań, ale na razie będziesz się z nią łączyć bezpośrednio:

    http://mocktarget.apigee.net

    Powinna pojawić się taka odpowiedź: Hello, Guest!

  2. Błąd

    Teraz spróbuj wywołać serwer proxy interfejsu API:

    http://ORG_NAME-test.apigee.net/helloapikey

    zastępując ORG_NAME nazwą organizacji Edge.

    Bez zasady Weryfikuj klucz interfejsu API to wywołanie dałoby taką samą odpowiedź jak poprzednie. W tym przypadku powinna pojawić się taka odpowiedź o błędzie:

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}

    co oznacza, że nie przekazano prawidłowego klucza interfejsu API (jako parametru zapytania).

W kolejnych krokach dodasz produkt API.

Dodawanie usługi API

Aby dodać produkt interfejsu API za pomocą interfejsu Apigee:

  1. Kliknij Opublikuj > Usługi API.
  2. Kliknij + Produkt API.
  3. Wpisz szczegóły produktu dla produktu API.

    Pole Opis
    Nazwa Wewnętrzna nazwa produktu API. Nie podawaj w nazwie znaków specjalnych.
    Uwaga: po utworzeniu usługi API nie można zmienić jej nazwy. Na przykład: helloworld_apikey-Product.
    Wyświetlana nazwa Wyświetlana nazwa produktu interfejsu API. Wyświetlana nazwa jest używana w interfejsie i możesz ją w każdej chwili edytować. Jeśli nie zostanie określona, użyta zostanie wartość pola Nazwa. To pole jest wypełniane automatycznie na podstawie wartości pola Nazwa. Możesz edytować lub usunąć jego zawartość. Wyświetlana nazwa może zawierać znaki specjalne. Na przykład:helloworld_apikey-Product.
    Opis Opis usługi API. Na przykład: Test product for tutorial.
    Środowisko Środowiska, do których produkt API będzie umożliwiał dostęp. Na przykład test lub prod.
    Dostęp Wybierz Publiczne.
    Automatycznie zatwierdzaj prośby o dostęp Włącz automatyczne zatwierdzanie próśb o klucze do tego produktu interfejsu API z dowolnej aplikacji.
    Limit Zignoruj to w tym samouczku.
    Dozwolone zakresy OAuth Zignoruj to w tym samouczku.
  4. W sekcji zasobów interfejsu API wybierz utworzony przed chwilą serwer proxy interfejsu API. Na przykład: helloworld_apikey.
  5. Kliknij Dodaj.
  6. W sekcji Ścieżki dodaj ścieżkę „/”.
  7. Kliknij Dodaj.
  8. Kliknij Zapisz.

W kolejnych krokach uzyskasz wymagany klucz interfejsu API.

Dodawanie dewelopera i aplikacji do organizacji

Następnie zasymulujemy proces rejestracji dewelopera, który chce korzystać z Twoich interfejsów API. Deweloper ma co najmniej 1 aplikację, która wywołuje Twoje interfejsy API, a każda aplikacja otrzymuje niepowtarzalny klucz interfejsu API. Dzięki temu dostawca interfejsu API ma większą kontrolę nad dostępem do interfejsów API i bardziej szczegółowe raporty o ruchu w interfejsie API według aplikacji.

Tworzenie dewelopera

Aby utworzyć dewelopera:

  1. W menu kliknij Opublikuj > Deweloperzy.
  2. Kliknij + Deweloper.
  3. W oknie Nowy deweloper wpisz:

    W tym polu Enter
    Imię Keyser
    Nazwisko Soze
    Nazwa użytkownika keyser
    E-mail keyser@example.com
  4. Kliknij Utwórz.

Rejestrowanie aplikacji

Aby zarejestrować aplikację dewelopera:

  1. Kliknij Opublikuj > Aplikacje.
  2. Kliknij + App (+ Aplikacja).
  3. W oknie Nowa aplikacja wpisz te dane:

    p
    W tym polu wykonaj to
    Nazwa i Wyświetlana nazwa Wpisz: keyser_app
    Firma / deweloper Wybierz: Developer
    Dla programistów Wybierz: Keyser Soze (keyser@example.com)
    Adres URL wywołania zwrotnegoNotatki Pozostaw to pole puste
  4. W sekcji Dane logowania w menu Data ważności wybierz Nigdy. Dane logowania do tej aplikacji nigdy nie wygasną.
  5. W sekcji Produkty kliknij Dodaj produkt.
  6. Wybierz helloworld_apikey-Product.
  7. Kliknij Dodaj.
  8. Aby zapisać zmiany, kliknij Utwórz nad sekcją Szczegóły aplikacji i po jej prawej stronie.

Pobieranie klucza interfejsu API

Aby uzyskać klucz interfejsu API:

  1. Na stronie Aplikacje (Opublikuj > Aplikacje) kliknij keyser_app.
  2. Na stronie keyser_app w sekcji Dane logowania obok opcji Klucz kliknij Pokaż. W sekcji Product (Produkt) zauważ, że klucz jest powiązany z wartością helloworld_apikey.

    .
  3. Wybierz i skopiuj klucz. Użyjesz go w następnym kroku.

Wywoływanie interfejsu API za pomocą klucza

Teraz, gdy masz już klucz interfejsu API, możesz go użyć do wywołania serwera proxy interfejsu API. Wpisz w przeglądarce: Zastąp nazwę organizacji Edge w miejscu ORG_NAME, a klucz interfejsu API w miejscu API_KEY poniżej. Upewnij się, że w parametrze zapytania nie ma dodatkowych spacji.

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

Teraz, gdy wywołasz proxy interfejsu API, powinna pojawić się ta odpowiedź:Hello, Guest!

Gratulacje! Utworzyliśmy proxy interfejsu API i zabezpieczyliśmy go, wymagając, aby wywołanie zawierało prawidłowy klucz interfejsu API.

Pamiętaj, że przekazywanie klucza interfejsu API jako parametru zapytania nie jest dobrą praktyką. Zamiast tego możesz przekazać go w nagłówku HTTP.

Sprawdzone metody: przekazywanie klucza w nagłówku HTTP

W tym kroku zmodyfikujesz serwer proxy, aby szukał klucza interfejsu API w nagłówku o nazwie x-apikey.

  1. Edytuj proxy interfejsu API. Wybierz Develop (Tworzenie) > API Proxies (Proxy interfejsów API) > helloworld_apikey i otwórz widok Develop (Tworzenie).
  2. Wybierz zasadę Verify API Key i zmodyfikuj plik XML zasady, aby wskazać, że ma ona szukać klucza w header, a nie w queryparam:

    <APIKey ref="request.header.x-apikey"/>
  3. Zapisz proxy interfejsu API, aby wdrożyć zmianę.
  4. Wykonaj to wywołanie interfejsu API za pomocą cURL, aby przekazać klucz interfejsu API jako nagłówek o nazwie x-apikey. Nie zapomnij zastąpić nazwy organizacji.

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

Pamiętaj, że aby w pełni wprowadzić zmianę, musisz też skonfigurować zasadę AssignMessage, aby usuwała nagłówek zamiast parametru zapytania. Na przykład:

<Remove>
<Headers>
    <Header name="x-apikey"/>
</Headers>
</Remove>

Powiązane artykuły

Oto niektóre tematy bezpośrednio związane z tym samouczkiem:

Zabezpieczanie interfejsów API za pomocą kluczy interfejsu API to tylko część historii. Często ochrona interfejsu API obejmuje dodatkowe zabezpieczenia, takie jak OAuth.

OAuth to otwarty protokół, który w skrócie polega na wymianie danych logowania (takich jak nazwa użytkownika i hasło) na tokeny dostępu. Tokeny dostępu to długie, losowe ciągi znaków, które można przekazywać w potoku wiadomości, nawet między aplikacjami, bez narażania oryginalnych danych logowania. Tokeny dostępu mają zwykle krótki okres ważności, więc stale generowane są nowe.