Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Czego się nauczysz
- Pobierz i wdróż przykładowy serwer proxy interfejsu API.
- Utwórz serwer proxy interfejsu API chroniony protokołem OAuth.
- Tworzenie produktu, dewelopera i aplikacji.
- Wymiana danych logowania dla tokena dostępu OAuth.
- Wywołaj interfejs API za pomocą tokena dostępu.
Z tego samouczka dowiesz się, jak zabezpieczyć interfejs API, korzystając z protokołu OAuth 2.0.
OAuth to protokół autoryzacji, który umożliwia aplikacjom dostęp do informacji w imieniu: użytkowników bez konieczności podawania nazwy użytkownika i hasła.
Protokół OAuth umożliwia wymianę danych uwierzytelniających (takich jak nazwa użytkownika/hasło lub klucz/klucz tajny) dla tokena dostępu. Na przykład:
joe:joes_password
(nazwa użytkownika:hasło) lub
Nf2moHOASMJeUmXVdDhlMbPaXm2U7eMc:unUOXYpPe74ZfLEb
(klucz:tajny)
zmieni się np. w:
b0uiYwjRZLEo4lEu7ky2GGxHkanN
Token dostępu jest losowym ciągiem znaków i ma charakter tymczasowy (powinien wygasnąć po dość krótki czas), dlatego przekazywanie go w celu uwierzytelnienia użytkownika w aplikacji bezpieczniejsze niż przekazywanie rzeczywistych danych logowania.
OAuth 2.0 specyfikacji definiują różne mechanizmy, nazywane „typami przyznawania” do przyznawania dostępu tokeny dla aplikacji. Najbardziej podstawowy typ uwierzytelnienia zdefiniowany przez OAuth 2.0 nosi nazwę „klient dane logowania”. W tym typie uwierzytelnienia tokeny dostępu OAuth są generowane w zamian za klienta. dane logowania, czyli pary klucz/tajny klucz klienta, jak w przykładzie powyżej.
Typ przyznawania danych logowania klienta w Edge jest zaimplementowany za pomocą zasad na serwerach proxy interfejsów API. O typowy przepływ OAuth w usłudze składa się z dwóch etapów:
- Wywołaj serwer proxy 1 interfejsu API, aby wygenerować token dostępu OAuth z klienta dane logowania. Do tego celu służy zasada OAuth 2.0 na serwerze proxy interfejsu API.
- Wywołaj serwer proxy 2 interfejsu API, aby wysłać token dostępu OAuth w wywołaniu interfejsu API. Serwer proxy interfejsu API weryfikuje token dostępu przy użyciu zasady OAuth 2.0.
Czego potrzebujesz
- Konto Apigee Edge. Jeśli jeszcze go nie masz, możesz się zarejestrować, korzystając ze wskazówek dojazdu o tworzeniu Apigee Konto Edge.
- Aplikacja cURL zainstalowana na komputerze i może wykonywać wywołania interfejsu API z poziomu wiersza poleceń.
Pobieranie i wdrażanie interfejsu API do generowania tokenów serwer proxy
W tym kroku utworzysz serwer proxy interfejsu API, który będzie generować token dostępu OAuth z klucza klienta i tajnego klucza klienta wysłane w wywołaniu interfejsu API. Apigee udostępnia przykładowy serwer proxy interfejsu API, który w ten sposób. Pobierz i wdróż serwer proxy teraz, a potem użyjesz go w dalszej części samouczka. (Ty możesz łatwo utworzyć ten serwer proxy interfejsu API samodzielnie. Ten krok pobierania i wdrażania jest wygodny oraz pokazać, jak łatwo można udostępniać już utworzone serwery proxy).
- Pobierz „oauth” przykładowego serwera proxy interfejsu API ZIP do dowolnego katalogu w pliku systemu.
- Otwórz stronę https://apigee.com/edge i zaloguj się.
- Kliknij Programowanie > Serwery proxy interfejsów API na lewym pasku nawigacyjnym.
- Kliknij + Serwer proxy.
- W kreatorze Utwórz serwer proxy kliknij Prześlij pakiet serwera proxy.
- Wybierz pobrany plik
oauth.zip
i kliknij Dalej. - Kliknij Utwórz.
- Po zakończeniu kompilacji kliknij Edytuj serwer proxy, aby wyświetlić nowy serwer proxy. w edytorze serwera proxy API.
- Na stronie Przegląd edytora proxy interfejsu API kliknij menu Wdrożenie.
i wybierz Test. To jest środowisko testowe w Twojej organizacji.
Po wyświetleniu prośby o potwierdzenie kliknij Wdróż.
Po ponownym kliknięciu menu Wdrażanie zielona ikona oznacza, że serwer proxy jest i wdrożono w środowisku testowym.
Doskonale! Udało Ci się pobrać i wdrożyć interfejs API generujący tokeny dostępu serwera proxy do organizacji Edge.
Wyświetl przepływ i zasady dotyczące protokołu OAuth
Przyjrzyjmy się bliżej temu, co zawiera serwer proxy interfejsu API.
- W edytorze serwera proxy API kliknij kartę Programowanie. Po lewej
Nawigator, zobaczysz dwie zasady. Zobaczysz też 2
POST
w sekcjiProxy Endpoints
. -
Kliknij AccessTokenClientCredential w sekcji
Proxy Endpoints
W widoku kodu XML zobaczysz pole
Flow
o nazwieAccessTokenClientCredential
:<Flow name="AccessTokenClientCredential"> <Description/> <Request> <Step> <Name>GenerateAccessTokenClient</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/accesstoken") and (request.verb = "POST")</Condition> </Flow>
Przepływ to etap przetwarzania na serwerze proxy interfejsu API. W tym przypadku przepływ jest wyzwalany, gdy: gdy zostanie spełniony określony warunek (jest to tak zwany przepływ warunkowy). Warunek zdefiniowane w element
<Condition>
oznacza, że jeśli wywołanie serwera proxy interfejsu API zostanie wykonane do zasób/accesstoken
, czasownik żądania toPOST
, a następnie Uruchamia zasadęGenerateAccessTokenClient
, która generuje dostęp token. -
Przyjrzyjmy się teraz zasadzie, która jest wyzwalana przez przepływ warunkowy. Kliknij Ikona zasady GenerateAccessTokenClient na diagramie przepływu.
Poniższa konfiguracja XML jest wczytywana do widoku kodu:<OAuthV2 name="GenerateAccessTokenClient"> <!-- This policy generates an OAuth 2.0 access token using the client_credentials grant type --> <Operation>GenerateAccessToken</Operation> <!-- This is in millseconds, so expire in an hour --> <ExpiresIn>3600000</ExpiresIn> <SupportedGrantTypes> <!-- This part is very important: most real OAuth 2.0 apps will want to use other grant types. In this case it is important to NOT include the "client_credentials" type because it allows a client to get access to a token with no user authentication --> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GrantType>request.queryparam.grant_type</GrantType> <GenerateResponse/> </OAuthV2>
Konfiguracja obejmuje te elementy:
<Operation>
, która może być jedną z kilku wstępnie zdefiniowanych wartości, który określa zasady do działania. W tym przypadku zostanie wygenerowany dostęp token.- Token wygaśnie po 1 godzinie (3600 000 milisekund) od wygenerowania.
- W
<SupportedGrantTypes>
protokół OAuth Wartość<GrantType>
, która powinna zostać użyta, toclient_credentials
(wymienianie klucza i tajnego klucza klienta na token OAuth). - Drugi element
<GrantType>
informuje zasadę, gdzie zajrzeć wywołanie interfejsu API dla parametru typu uwierzytelnienia przez interfejs API, zgodnie ze specyfikacją protokołu OAuth 2.0. Zobaczysz to później w wywołaniu interfejsu API. Rodzaj uwierzytelnienia można też wysłać w pliku HTTP nagłówek (request.header.grant_type
) lub jako parametr formularza (request.formparam.grant_type
).
Obecnie nie musisz nic robić z serwerem proxy interfejsu API. W późniejszych krokach użyjesz tego serwera proxy interfejsu API do wygenerowania tokena dostępu OAuth. Ale najpierw musisz więcej rzeczy:
- Utwórz serwer proxy interfejsu API, który chcesz zabezpieczyć za pomocą protokołu OAuth.
- Utwórz jeszcze kilka artefaktów, aby utworzyć klucz klienta i tajny klucz klienta. musisz wymienić na token dostępu.
Tworzenie serwera proxy interfejsu API chronionego protokołem OAuth
Teraz utworzysz serwer proxy interfejsu API, który chcesz chronić. Jest to wywołanie interfejsu API, zwraca to, czego szukasz. W tym przypadku serwer proxy interfejsu API wywoła usługę celu próbnego Apigee zwracanie adresu IP. Zobaczysz ją tylko wtedy, gdy przekażesz prawidłowy dostęp OAuth za pomocą wywołania interfejsu API.
Utworzony przez Ciebie serwer proxy interfejsu API będzie zawierać zasadę, która sprawdza token OAuth w użytkownika.
- Kliknij Programowanie > Serwery proxy interfejsów API na lewym pasku nawigacyjnym.
- Kliknij + Serwer proxy.
- W kreatorze Tworzenie serwera proxy wybierz Odwrotny serwer proxy (najczęstszy). i kliknij Dalej.
- Skonfiguruj serwer proxy w następujący sposób:
W tym polu zrób to Nazwa serwera proxy Wpisz: helloworld_oauth2
Ścieżka bazowa projektu Zmień na:
/hellooauth2
Ścieżka podstawowa projektu to część adresu URL używanego do wysyłania żądań do interfejsu API serwera proxy.
Istniejący interfejs API Wpisz:
https://mocktarget.apigee.net/ip
Definiuje docelowy adres URL, który Apigee Edge wywołuje w żądaniu wysłanym do interfejsu API serwera proxy.
Opis Wpisz: hello world protected by OAuth
- Kliknij Dalej.
- Na stronie Typowe zasady:
W tym polu zrób to Zabezpieczenia: autoryzacja Wybierz: OAuth 2.0. - Kliknij Dalej.
- Na stronie Virtual Hosts (Hosty wirtualne) kliknij Next (Dalej).
- Na stronie Kompilacja wybierz środowisko testowe. kliknij Create and Deploy (Utwórz i wdróż).
- Na stronie Podsumowanie zobaczysz potwierdzenie, że nowy serwer proxy interfejsu API został utworzony, a serwer proxy interfejsu API został wdrożony w teście dla środowiska.
- Kliknij Edytuj serwer proxy, aby wyświetlić stronę Przegląd serwera proxy interfejsu API.
Zwróć uwagę, że tym razem serwer proxy interfejsu API został wdrożony automatycznie. Kliknij przycisk Deployment sprawdź, czy obok przycisku „test” znajduje się zielona kropka wdrożenia. dla środowiska.
Wyświetl zasady
Przyjrzyjmy się bliżej temu, co udało Ci się utworzyć.
- W edytorze serwera proxy API kliknij kartę Programowanie. Zobaczysz, że
do przepływu żądań serwera proxy interfejsu API zostały dodane zasady:
- Verify OAuth v2.0 Access Token (Zweryfikuj token dostępu OAuth 2.0) – sprawdza wywołanie interfejsu API, sprawdź, czy jest dostępny prawidłowy token OAuth.
- Remove Header Authorization – zasada AssignMessage, która usuwa token dostępu po jego sprawdzeniu, aby nie został przekazany do usługi docelowej. Jeśli usługa docelowa wymagała tokena dostępu OAuth, nie użyjesz tej zasady).
-
Kliknij ikonę Verify OAuth v2.0 Access Token (Zweryfikuj token dostępu OAuth 2.0) w widoku przepływu. spójrz na kod XML poniżej w panelu kodu.
<OAuthV2 async="false" continueOnError="false" enabled="true" name="verify-oauth-v2-access-token"> <DisplayName>Verify OAuth v2.0 Access Token</DisplayName> <Operation>VerifyAccessToken</Operation> </OAuthV2>
Zwróć uwagę, że
<Operation>
toVerifyAccessToken
. Operacja określa, do czego powinna służyć zasada. W tym przypadku sprawdza ono, pod kątem prawidłowego tokena OAuth w żądaniu.
Dodaj usługę API
Aby dodać usługę API za pomocą interfejsu użytkownika Apigee:
- Kliknij Opublikuj > Usługi API.
- Kliknij + Usługa API.
- Wpisz szczegóły produktu API.
Pole Opis Nazwa Wewnętrzna nazwa usługi API. Nie używaj w nazwie znaków specjalnych.
Uwaga: po utworzeniu usługi API nie można zmienić nazwy. Na przykład:helloworld_oauth2-Product
Wyświetlana nazwa Wyświetlana nazwa usługi API. Wyświetlana nazwa jest używana w interfejsie i możesz ją edytować go w każdej chwili. Jeśli nie podasz żadnej wartości, zostanie użyta wartość Nazwa. To pole jest wypełniane automatycznie korzystając z wartości Nazwa; możesz edytować i usuwać jej zawartość. Wyświetlana nazwa może zawierać znaków specjalnych. Na przykład: helloworld_oauth2-Product
.Opis Opis usługi API. Środowisko Środowiska, do których usługa API zezwala na dostęp. Wybierz środowisko, do którego wdrożyłeś serwer proxy interfejsu API. Na przykład: test
.Dostęp Wybierz Publiczny. Automatycznie zatwierdzaj prośby o dostęp Włącz automatyczne zatwierdzanie żądań kluczy dla tej usługi API z dowolnej aplikacji. Limit Ignoruj w tym samouczku. Dozwolone zakresy protokołu OAuth Ignoruj w tym samouczku. - W polu Proxy API wybierz utworzony przed chwilą serwer proxy interfejsu API.
- W polu Ścieżka wpisz „/”. Zignoruj pozostałe pola.
- Kliknij Zapisz.
Dodaj dewelopera i aplikację do swojego organizacja
Następnie przeprowadzisz symulację przepływu pracy programisty rejestrującego się w celu korzystania z Twoich interfejsów API. W idealnej sytuacji deweloperzy rejestrują siebie i swoje aplikacje w Twoim portalu dla deweloperów. W tym ale dodaj dewelopera i aplikację jako administratora.
Programista ma co najmniej 1 aplikację, która wywołuje Twoje interfejsy API, a każda aplikacja otrzymuje unikalny identyfikator klucza klienta i tajnego klucza klienta. Ten klucz/tajny-klucz dla aplikacji zapewnia też Tobie, dostawcy interfejsu API, bardziej szczegółową kontrolę nad dostępem do interfejsów API i bardziej szczegółowe raporty analityczne dotyczące interfejsów API bo Edge wie, do którego programisty i której aplikacji należą tokeny OAuth.
Utwórz programistę
Stwórzmy programistę Nigela Tufnela.
- Kliknij Opublikuj > Programistów.
- Kliknij + Deweloper.
- W oknie New Developer (Nowy programista) wpisz te informacje:
W tym polu Enter Imię Nigel
Nazwisko Tufnel
Nazwa użytkownika nigel
E-mail nigel@example.com
- Kliknij Utwórz.
Zarejestruj aplikację
Utwórzmy aplikację dla Nigela.
- Kliknij Opublikuj > Aplikacje.
- Kliknij + Aplikacja.
- W oknie New App (Nowa aplikacja) wpisz te informacje:
W tym polu zrób to Nazwa i Wyświetlana nazwa Wpisz: nigel_app
Deweloper Kliknij Programista i wybierz: Nigel Tufnel (nigel@example.com)
Callback URL (Adres URL wywołania zwrotnego) i Notes (Uwagi) Pozostaw puste - W sekcji Produkty kliknij Dodaj produkt.
- Wybierz helloworld_oauth2-Product.
- Kliknij Utwórz.
Pobierz klucz klienta i tajny klucz klienta
Teraz otrzymasz klucz klienta i tajny klucz klienta, które będą wymieniane na protokół OAuth token dostępu.
- Upewnij się, że jest wyświetlana strona nigel_app. Jeśli nie, na stronie Aplikacje (Opublikuj > Aplikacje) kliknij nigel_app.
-
Na stronie nigel_app kliknij Pokaż w kolumnie Key i Obiekt tajny. Zwróć uwagę, że klucz/obiekt tajny to powiązany z elementem „helloworld_oauth2-Product” Utworzone automatycznie wcześniej.
- Wybierz i skopiuj klucz oraz tajny klucz. Wklej je tymczasowo . Użyjesz ich w późniejszym kroku, w którym wywołasz serwer proxy API, który wymienić je na token dostępu OAuth.
Spróbuj wywołać interfejs API, aby uzyskać adres IP (niepowodzenie!)
Tymczasem spróbuj wywołać chroniony serwer proxy interfejsu API, który powinien zwracać Twój adres IP
adresu. Wykonaj poniższe polecenie cURL w oknie terminala, zastępując Edge
nazwę organizacji. Słowo test
w adresie URL to Twój
w środowisku testowym organizacji, w którym zostały wdrożone serwery proxy. Ścieżka bazowa serwera proxy
to /hellooauth2
, czyli ta sama ścieżka bazowa, która została określona podczas tworzenia serwera proxy.
Zwróć uwagę, że
nie przekazywania tokena dostępu OAuth w trakcie wywołania.
curl https://ORG_NAME-test.apigee.net/hellooauth2
Ponieważ serwer proxy interfejsu API ma zasadę Verify OAuth v2.0 Access Token sprawdza, czy w żądaniu znajduje się prawidłowy token OAuth, wywołanie powinno zakończyć się niepowodzeniem w przypadku wiadomość:
{"fault":{"faultstring":"Invalid access token","detail":{"errorcode":"oauth.v2.InvalidAccessToken"}}}
W takim przypadku porażka jest dobra! Oznacza to, że serwer proxy interfejsu API jest znacznie bezpieczniejszy. Tylko zaufane aplikacje z prawidłowym tokenem dostępu OAuth mogą wywoływać ten interfejs API.
Uzyskiwanie tokena dostępu OAuth
Teraz czas na wielkie zyski. Za chwilę użyjesz klucza i tajnego klucza skopiować i wkleić do pliku tekstowego, a następnie wymienić je na token dostępu OAuth. Jesteś teraz wywołasz interfejs API do zaimportowanego przykładowego serwera proxy interfejsu API – oauth, wygeneruje token dostępu API.
Używając tego klucza i tajnego klucza, wykonaj poniższe wywołanie cURL (zwróć uwagę, że protokół
https
), zastępując nazwę organizacji Edge, swój klucz i
obiekt tajny we wskazanym miejscu:
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" \ "https://ORG_NAME-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials" \ -d "client_id=CLIENT_KEY&client_secret=CLIENT_SECRET"
Pamiętaj, że jeśli do nawiązywania połączenia używasz klienta takiego jak Postman,
client_id
i client_secret
znajdują się w treści
musi mieć wartość x-www-form-urlencoded
.
Powinna pojawić się taka odpowiedź:
{ "issued_at" : "1466025769306", "application_name" : "716bbe61-f14a-4d85-9b56-a62ff8e0d347", "scope" : "", "status" : "approved", "api_product_list" : "[helloworld_oauth2-Product]", "expires_in" : "3599", //--in seconds "developer.email" : "nigel@example.com", "token_type" : "BearerToken", "client_id" : "xNnREu1DNGfiwzQZ5HUN8IAUwZSW1GZW", "access_token" : "GTPY9VUHCqKVMRB0cHxnmAp0RXc0", "organization_name" : "myOrg", "refresh_token_expires_in" : "0", //--in seconds "refresh_count" : "0" }
Masz token dostępu OAuth. Skopiuj wartość access_token (bez cudzysłowów) i wklej go do pliku tekstowego. Za chwilę go wykorzystasz.
Co się właśnie stało?
Pamiętaj, że przy oglądaniu tego przepływu warunkowego w
serwer proxy oauth, czyli ten, który informuje, że identyfikator URI zasobu to
/accesstoken
, a czasownik żądania to POST
, aby wykonać
GenerateAccessTokenClient
zasady OAuth, które generują token dostępu? Twój cURL
spełniło te warunki, więc zasady OAuth zostały wykonane. Twój klucz klienta został zweryfikowany
i tajny klucz klienta, a następnie wymieniono je na token OAuth, który wygasa w ciągu 1 godziny.
Wywołaj interfejs API za pomocą tokena dostępu (powodzenie)
Po utworzeniu tokena dostępu możesz go użyć do wywoływania serwera proxy interfejsu API. Niech po wywołaniu cURL. Zastąp nazwę organizacji Edge i token dostępu.
curl https://ORG_NAME-test.apigee.net/hellooauth2 -H "Authorization: Bearer TOKEN"
Powinno teraz pojawić się pomyślne wywołanie serwera proxy interfejsu API, które zwraca Twój adres IP. Na przykład:
{"ip":"::ffff:192.168.14.136"}
Wywołanie interfejsu API możesz powtarzać przez około godzinę. Po tym czasie token dostępu tracą ważność. Aby zadzwonić po godzinie, musisz wygenerować nowy token dostępu za pomocą metody poprzednich kroków.
Gratulacje! Udało Ci się utworzyć serwer proxy interfejsu API i zabezpieczyć go, wymagając podania poprawnego Wywołanie musi zawierać token dostępu OAuth.
Powiązane artykuły
- Strona główna OAuth
- Zasady OAuthV2
- Pobierz serwery proxy interfejsów API (pokazuje, jak powiązać serwer proxy interfejsu API w pliku ZIP, takim jak pobrany plik).