Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Co
Zasada weryfikacji klucza interfejsu API umożliwia wymuszanie weryfikacji kluczy interfejsu API w czasie działania, dopuszczając jedynie aplikacje z zatwierdzonymi kluczami interfejsu API uzyskują dostęp do tych interfejsów API. Ta zasada zapewnia, że klucze interfejsu API są prawidłowe, nie zostały unieważnione i mogą korzystać z konkretnych zasobów powiązanych z interfejsem API; usług.
Przykłady
Klucz w parametrze zapytania
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.queryparam.apikey" /> </VerifyAPIKey>
W tym przykładzie zasada oczekuje, że klucz interfejsu API zostanie znaleziony w zmiennej przepływu o nazwie
request.queryparam.apikey
Zmienna request.queryparam.{name}
to standardowa zmienna przepływu brzegowego, która jest uzupełniana wartością przekazanego parametru zapytania
w żądaniu klienta.
To polecenie curl
przekazuje klucz interfejsu API w parametrze zapytania:
curl http://myorg-test.apigee.net/mocktarget?apikey=IEYRtW2cb7A5Gs54A1wKElECBL65GVls
Klucz w nagłówku
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.header.x-apikey" /> </VerifyAPIKey>
W tym przykładzie zasada oczekuje, że klucz interfejsu API zostanie znaleziony w zmiennej przepływu o nazwie
request.header.x-apikey
Zmienna request.header.{name}
to standardowa zmienna przepływu brzegowego, która jest wypełniana wartością przekazywanego nagłówka
w żądaniu klienta.
Poniższy URL cURL pokazuje, jak przekazać klucz interfejsu API w nagłówku:
curl "http://myorg-test.apigee.net/mocktarget" -H "x-apikey:IEYRtW2cb7A5Gs54A1wKElECBL65GVls"
Klucz w zmiennej
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="requestAPIKey.key"/> </VerifyAPIKey>
Zasada może odwoływać się do dowolnej zmiennej, która zawiera klucz. Zasada w tym przykładzie wyodrębnia klucz interfejsu API ze zmiennej o nazwie requestAPIKey.key.
Sposób wypełniania tej zmiennej zależy od Ciebie. Możesz na przykład użyć części Wyodrębnij, Zasady dotyczące zmiennych służące do wypełniania parametru requestAPIKey.key parametrem zapytania o nazwie myKey, jak pokazano na ilustracji. poniżej:
<ExtractVariables async="false" continueOnError="false" enabled="true" name="SetAPIKeyVar"> <Source>request</Source> <QueryParam name="myKey"> <Pattern ignoreCase="true">{key}</Pattern> </QueryParam> <VariablePrefix>requestAPIKey</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
Zmienne przepływu zasad dostępu
<AssignMessage async="false" continueOnError="false" enabled="true" name="accessverifyvars"> <AssignVariable> <Name>devFirstName</Name> <Ref>verifyapikey.verify-api-key.developer.firstName</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>devLastName</Name> <Ref>verifyapikey.verify-api-key.developer.lastName</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>devEmail</Name> <Ref>verifyapikey.verify-api-key.developer.email</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Edge automatycznie wypełnia zestaw zmiennych przepływu podczas wykonywania klucza interfejsu Verify API dla prawidłowego klucza interfejsu API. Za pomocą tych zmiennych można uzyskiwać dostęp do informacji, takich jak nazwa aplikacji, identyfikator aplikacji oraz informacje o deweloperze lub firmie, która ją zarejestrowała. W powyższego przykładu: korzystasz z zasady Przypisz wiadomości, aby uzyskać dostęp do imienia dewelopera, nazwiska imię i nazwisko oraz adres e-mail po wykonaniu klucza interfejsu Verify API.
Wszystkie te zmienne mają prefiks:
verifyapikey.{policy_name}
W tym przykładzie nazwa zasady weryfikacji klucza interfejsu API to „verify-api-key”. Dlatego odsyłamy
imię i nazwisko programisty przesyłającego prośbę, otwierając
zmienna verifyapikey.verify-api-key.developer.firstName.
Poznaj Edge
Informacje o zasadach weryfikacji klucza interfejsu API
Gdy deweloper rejestruje aplikację na Edge, automatycznie generuje klucz klienta, . Parę klucza klienta i hasła aplikacji możesz wyświetlić w interfejsie Edge lub uzyskać do nich dostęp. z interfejsu Edge API.
W momencie rejestracji aplikacji deweloper wybiera co najmniej jedną usługę interfejsu API, być powiązany z aplikacją, gdzie usługa interfejsu API jest zbiorem zasobów; dostępne przez serwery proxy interfejsów API. Następnie deweloper przekazuje klucz interfejsu API (klucz klienta) w ramach każde żądanie do interfejsu API w usłudze API powiązanej z aplikacją. Więcej informacji znajdziesz w artykule Przegląd publikowanych zmian.
Kluczy interfejsu API mogą być używane jako tokeny uwierzytelniania lub uzyskiwanie dostępu OAuth tokeny. W OAuth klucze interfejsu API są nazywane „identyfikatorem klienta”. Nazwy mogą być używane wymiennie. Więcej informacji znajdziesz w artykule Strona główna OAuth.
Edge automatycznie wypełnia zestaw zmiennych przepływu podczas wykonywania zasady Verify API Key. Zobacz przepływ poniżej.
Odniesienie do elementu
Oto elementy i atrybuty, które możesz skonfigurować w tej zasadzie:
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key-1"> <DisplayName>Custom label used in UI</DisplayName> <APIKey ref="variable_containing_api_key"/> </VerifyAPIKey>
<VerifyAPIKey> atrybuty
Ten przykład pokazuje atrybuty w tagu <VerifyAPIKey>
:
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key-1">
W tej tabeli opisano atrybuty wspólne dla wszystkich elementów nadrzędnych zasad:
Atrybut | Opis | Domyślny | Obecność |
---|---|---|---|
name |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw jako Ustaw jako |
fałsz | Opcjonalnie |
enabled |
Aby egzekwować zasadę, ustaw wartość Aby wyłączyć zasadę, ustaw wartość |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
fałsz | Wycofano |
<DisplayName> element
Używaj oprócz atrybutu name
do oznaczania zasady w
edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.
<DisplayName>Policy Display Name</DisplayName>
Domyślny |
Nie dotyczy Jeśli pominiesz ten element, atrybut |
---|---|
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
<APIKey> element
Ten element określa zmienną przepływu, która zawiera klucz interfejsu API. Zwykle klient wysyła klucz interfejsu API
w parametrze zapytania, nagłówku HTTP lub parametrze formularza. Jeśli na przykład klucz jest wysyłany w nagłówku
o nazwie x-apikey
, klucz zostanie znaleziony w zmiennej: request.header.x-apikey
Domyślny | Nie dotyczy |
---|---|
Obecność | Wymagane |
Typ | Ciąg znaków |
Atrybuty
W tej tabeli opisano atrybuty elementu <APIKey>
Atrybut | Opis | Domyślny | Obecność |
---|---|---|---|
odsyłacz |
Odwołanie do zmiennej zawierającej klucz interfejsu API. Dozwolona jest tylko jedna lokalizacja zgodnie z zasadami. |
Nie dotyczy | Wymagane |
Przykłady
W tych przykładach klucz jest przekazywany w parametrach i nagłówku o nazwie x-apikey
.
Jako parametr zapytania:
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.queryparam.x-apikey"/> </VerifyAPIKey>
Jako nagłówek HTTP:
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.header.x-apikey"/> </VerifyAPIKey>
Jako parametr formularza HTTP:
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.formparam.x-apikey"/> </VerifyAPIKey>
Schematy
Zmienne przepływu
Gdy zasada Verify API Key jest egzekwowana na prawidłowym kluczu API, Edge wypełnia zestaw przepływu zmiennych. Zmienne te są dostępne w przypadku zasad lub kodu wykonywanego później w procesie i są dostępne często są wykorzystywane do przetwarzania niestandardowego na podstawie atrybutów klucza interfejsu API, takich jak nazwa aplikacji, usługa API używana do autoryzacji klucza lub niestandardowe atrybuty klucza interfejsu API.
Zasada uwzględnia kilka różnych typów zmiennych przepływu, w tym:
- Ogólne
- Promująca aplikację
- Deweloper
- Firma
- Analytics
Każdy typ zmiennej przepływu ma inny prefiks. Wszystkie zmienne są skalarami oprócz tych oznaczonych jako tablice.
Ogólne zmienne przepływu
W tabeli poniżej znajdziesz ogólne zmienne przepływu wypełniane przez zasady weryfikacji klucza interfejsu API. Wszystkie te zmienne mają prefiks:
verifyapikey.{policy_name}
Na przykład: verifyapikey.{policy_name}.client_id
Dostępne zmienne:
Zmienna | Opis |
---|---|
client_id |
Klucz klienta (inaczej klucz interfejsu API lub klucz aplikacji) dostarczony przez aplikację wysyłającą żądanie. |
client_secret |
Tajny klucz klienta powiązany z kluczem klienta. |
redirection_uris |
Wszelkie identyfikatory URI przekierowania w żądaniu. |
developer.app.id |
Identyfikator aplikacji dewelopera wysyłającej żądanie. |
developer.app.name |
Nazwa aplikacji dewelopera wysyłającej żądanie. |
developer.id |
Identyfikator dewelopera zarejestrowanego jako właściciel aplikacji, która wysłała prośbę. |
developer.{custom_attrib_name} |
Wszystkie atrybuty niestandardowe uzyskane z profilu aplikacji. |
DisplayName |
Wartość parametru <DisplayName> zasady . |
failed |
Ustaw jako „true” (prawda) gdy weryfikacja klucza interfejsu API się nie powiedzie. |
{custom_app_attrib} |
Każdy atrybut niestandardowy pobrany z profilu aplikacji. Podaj nazwę segmentu niestandardowego . |
apiproduct.name* |
Nazwa usługi API używanej do weryfikacji żądania. |
apiproduct.{custom_attrib_name}* |
Każdy atrybut niestandardowy pobrany z profilu usługi interfejsu API. |
apiproduct.developer.quota.limit* |
Limit ustawiony dla usługi API (jeśli istnieje). |
apiproduct.developer.quota.interval* |
Interwał limitu ustawiony dla usługi API (jeśli istnieje). |
apiproduct.developer.quota.timeunit* |
Jednostka czasu limitu ustawiona dla usługi API (jeśli istnieje). |
* Jeśli produkty w interfejsie API są wypełniane automatycznie, zmienne produktów w interfejsie API są wypełniane automatycznie.
skonfigurowana z prawidłowym środowiskiem, serwerami proxy i zasobami (pochodzącymi z
proxy.pathsuffix ). Aby dowiedzieć się, jak skonfigurować usługi API, zobacz
Korzystanie z krawędzi
do zarządzania interfejsami API i publikacji danych. |
Zmienne przepływu aplikacji
Te zmienne procesu zawierające informacje o aplikacji są wypełniane przez zasady. Wszystkie te zmienne mają prefiks:
verifyapikey.{policy_name}.app
.
Na przykład:
verifyapikey.{policy_name}.app.name
Dostępne zmienne:
Zmienna | Opis |
---|---|
name |
Nazwa aplikacji. |
id |
Identyfikator aplikacji. |
accessType |
Nieużywany przez Apigee. |
callbackUrl |
URL wywołania zwrotnego aplikacji. Zwykle używane tylko w przypadku OAuth. |
DisplayName |
Wyświetlana nazwa aplikacji. |
status |
Stan aplikacji, na przykład „Zatwierdzona” czy „odrażający”. |
apiproducts |
Tablica zawierająca listę produktów interfejsu API powiązanych z aplikacją. |
appFamily |
Dowolna rodzina aplikacji zawierająca aplikację lub „domyślna”. |
appParentStatus |
Stan elementu nadrzędnego aplikacji, np. „Aktywna” lub „nieaktywny” |
appType |
typ aplikacji „Firma”; lub „Programista”. |
appParentId |
Identyfikator aplikacji nadrzędnej. |
created_at |
Znacznik daty i godziny utworzenia aplikacji. |
created_by |
Adres e-mail dewelopera, który utworzył aplikację. |
last_modified_at |
Znacznik daty i godziny ostatniej aktualizacji aplikacji. |
last_modified_by |
Adres e-mail dewelopera, który ostatnio zaktualizował aplikację. |
{app_custom_attributes} |
Dowolny niestandardowy atrybut aplikacji. Podaj nazwę atrybutu niestandardowego. |
Zmienne procesu dla programistów
Te zmienne procesu zawierające informacje o deweloperze są wypełniane przez funkcję . Wszystkie te zmienne mają prefiks:
verifyapikey.{policy_name}.developer
Na przykład:
verifyapikey.{policy_name}.developer.id
Dostępne zmienne:
Zmienna | Opis |
---|---|
id |
Zwraca organizację {org_name}@@{developer_id} |
userName |
Nazwa użytkownika dewelopera. |
firstName |
Imię dewelopera. |
lastName |
Nazwisko dewelopera. |
email |
Adres e-mail dewelopera. |
status |
Stan dewelopera: aktywny, nieaktywny lub login_lock. |
apps |
Tablica aplikacji powiązanych z deweloperem. |
created_at |
Data i godzina utworzenia dewelopera. |
created_by |
Adres e-mail użytkownika, który utworzył dewelopera. |
last_modified_at |
Data i godzina ostatniej modyfikacji dewelopera. |
last_modified_by |
Adres e-mail użytkownika, który zmodyfikował dewelopera. |
{developer_custom_attributes} |
Dowolny niestandardowy atrybut dewelopera. Podaj nazwę atrybutu niestandardowego. |
Company |
Nazwa firmy (jeśli istnieje) powiązana z deweloperem. |
Zmienne przepływu firmy
Poniższe zmienne przepływu zawierające informacje o firmie są wypełniane przez funkcję . Wszystkie te zmienne mają prefiks:
verifyapikey.{policy_name}.company
Na przykład:
verifyapikey.{policy_name}.company.name
Dostępne zmienne:
Zmienna | Opis |
---|---|
name |
Nazwa firmy. |
displayName |
Wyświetlana nazwa firmy. |
id |
Identyfikator firmy. |
apps |
Tablica z listą aplikacji firmy. |
appOwnerStatus |
Stan właściciela aplikacji: aktywny, nieaktywny lub login_lock.
|
created_at |
Data i godzina utworzenia firmy. |
created_by |
Adres e-mail użytkownika, który utworzył firmę. |
last_modified_at |
Data i godzina ostatniej modyfikacji firmy. |
last_modified_by |
Adres e-mail użytkownika, który ostatnio modyfikował firmę. |
{company_custom_attributes} |
Dowolny niestandardowy atrybut firmy. Podaj nazwę atrybutu niestandardowego. |
Zmienne Analytics
Gdy zasada Weryfikacja klucza interfejsu API jest stosowana w Analytics, te zmienne są automatycznie wypełniane: jest egzekwowane dla prawidłowego klucza interfejsu API. Te zmienne są wypełniane tylko przez klucz interfejsu Verify API i zasadami protokołu OAuth.
Zmienne i wartości mogą służyć jako wymiary do tworzenia raportów Analytics, które zapewniają wgląd w wzorce konsumpcji przez deweloperów i aplikacje.
- apiproduct.name
- developer.app.name
- client_id
- developer.id
Informacje o błędzie
W tej sekcji opisano kody błędów i komunikaty o błędach, które są zwracane, oraz zmienne błędów ustawiane przez Edge, gdy ta zasada wyzwala błąd. Warto o tym wiedzieć, jeśli rozwijasz reguły błędów, aby obsługi błędów. Więcej informacji znajdziesz w artykule Co musisz wiedzieć o błędach związanych z zasadami i postępowaniu z błędami
Błędy w czasie wykonywania
Te błędy mogą wystąpić podczas wykonywania zasady.
Kod błędu | Stan HTTP | Przyczyna |
---|---|---|
keymanagement.service.CompanyStatusNotActive |
401 | Firma powiązana z aplikacją deweloperską z używanym przez Ciebie kluczem interfejsu API ma – stan nieaktywny. Gdy firma jest ustawiona na Nieaktywna, nie można uzyskać dostępu do deweloperów ani aplikacji powiązanych z daną Firmą. Administrator organizacji może zmienić stan firmy za pomocą interfejsu API do zarządzania. Patrz sekcja Ustawianie stanu danej Firmy. |
keymanagement.service.DeveloperStatusNotActive |
401 |
Deweloper, który utworzył aplikację deweloperską z używanym przez Ciebie kluczem interfejsu API, mieć status „Nieaktywny”. Gdy deweloper aplikacji jest ustawiony na Nieaktywny, wszystkie aplikacje dewelopera utworzone przez tego dewelopera są dezaktywowane. Administrator z odpowiednimi uprawnieniami (np. Administrator organizacji) może zmienić stan dewelopera w tych obszarach: sposoby:
|
keymanagement.service.invalid_client-app_not_approved |
401 | Aplikacja dewelopera powiązana z kluczem interfejsu API została unieważniona. Unieważniona aplikacja nie może nie uzyskuje dostępu do żadnych usług API i nie może wywołać żadnego interfejsu API zarządzanego przez Apigee Edge. Administrator organizacji może: zmienić stan aplikacji związanej z deweloperem za pomocą interfejsu API do zarządzania. Zobacz Zatwierdź lub unieważnij aplikację dewelopera. |
oauth.v2.FailedToResolveAPIKey |
401 | Zasada oczekuje, że klucz interfejsu API znajdzie się w zmiennej określonej w parametrze <APIKey> . Ten błąd występuje, gdy oczekiwana zmienna nie istnieje (nie można jej rozwiązać). |
oauth.v2.InvalidApiKey |
401 | Edge otrzymał klucz interfejsu API, ale jest on nieprawidłowy. Gdy Edge wyszukuje klucz musi być taki sam jak w dniu, który został wysłany w żądaniu. Jeśli interfejs API zadziałał upewnij się, że klucz nie został wygenerowany ponownie. Jeśli klucz został ponownie wygenerowany, zobaczysz ten błąd, jeśli spróbujesz użyć starego klucza. Szczegółowe informacje znajdziesz w artykule Rejestrowanie aplikacji i zarządzanie interfejsem API . |
oauth.v2.InvalidApiKeyForGivenResource |
401 | Edge otrzymał klucz interfejsu API, który jest prawidłowy. nie pasuje jednak do zatwierdzony klucz w aplikacji dla deweloperów powiązanym z serwerem proxy interfejsu API w usłudze. |
Błędy wdrażania
Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego tę zasadę.
Nazwa błędu | Przyczyna |
---|---|
SpecifyValueOrRefApiKey |
Element <APIKey> nie ma określonej wartości lub klucza. |
Zmienne błędów
Te zmienne są ustawiane po wystąpieniu błędu działania. Więcej informacji znajdziesz w artykule Podstawowe informacje o błędach związanych z naruszeniem zasad.
Zmienne | Gdzie | Przykład |
---|---|---|
fault.name="fault_name" |
fault_name to nazwa błędu podana w tabeli Błędy czasu działania powyżej. Nazwa błędu to ostatnia część kodu błędu. | fault.name Matches "FailedToResolveAPIKey" |
oauthV2.policy_name.failed |
policy_name to określona przez użytkownika nazwa zasady, która spowodowała błąd. | oauthV2.VK-VerifyAPIKey.failed = true |
Przykładowe odpowiedzi na błędy
{ "fault":{ "faultstring":"Invalid ApiKey", "detail":{ "errorcode":"oauth.v2.InvalidApiKey" } } }
{ "fault":{ "detail":{ "errorcode":"keymanagement.service.DeveloperStatusNotActive" }, "faultstring":"Developer Status is not Active" } }
Przykładowa reguła błędu
<FaultRule name="FailedToResolveAPIKey"> <Step> <Name>AM-FailedToResolveAPIKey</Name> </Step> <Condition>(fault.name Matches "FailedToResolveAPIKey") </Condition> </FaultRule>