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 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
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause |
---|---|---|
keymanagement.service.CompanyStatusNotActive |
401 | The Company associated with the Developer App that has the API key you are using has an inactive status. When a Company's status is set to inactive, you cannot access the developers or apps associated with that Company. An org admin can change a Company's status using the management API. See Set the Status of a Company. |
keymanagement.service.DeveloperStatusNotActive |
401 |
The developer who created the Developer App that has the API key you are using has an inactive status. When an App Developer's status is set to inactive, any Developer Apps created by that developer are deactivated. An admin user with appropriate permissions (such as Organization Administrator) can change a developer's status in the following ways:
|
keymanagement.service.invalid_client-app_not_approved |
401 | The Developer App associated with the API key is revoked. A revoked app cannot access any API products and cannot invoke any API managed by Apigee Edge. An org admin can change the status of a Developer App using the management API. See Approve or Revoke Developer App. |
oauth.v2.FailedToResolveAPIKey |
401 | The policy expects to find the API key in a variable that is specified in the policy's <APIKey> element. This error arises when the expected variable does not exist (it cannot be resolved). |
oauth.v2.InvalidApiKey |
401 | An API key was received by Edge, but it is invalid. When Edge looks up the key in its database, it must exactly match the on that was sent in the request. If the API worked previously, make sure the key was not regenerated. If the key was regenerated, you will see this error if you try to use the old key. For details, see Register apps and manage API keys. |
oauth.v2.InvalidApiKeyForGivenResource |
401 | An API key was received by Edge, and it is valid; however, it does not match an approved key in the Developer App associated with your API proxy through a Product. |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause |
---|---|
SpecifyValueOrRefApiKey |
The <APIKey> element does not have a value or key specified. |
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "FailedToResolveAPIKey" |
oauthV2.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.VK-VerifyAPIKey.failed = true |
Example error responses
{ "fault":{ "faultstring":"Invalid ApiKey", "detail":{ "errorcode":"oauth.v2.InvalidApiKey" } } }
{ "fault":{ "detail":{ "errorcode":"keymanagement.service.DeveloperStatusNotActive" }, "faultstring":"Developer Status is not Active" } }
Example fault rule
<FaultRule name="FailedToResolveAPIKey"> <Step> <Name>AM-FailedToResolveAPIKey</Name> </Step> <Condition>(fault.name Matches "FailedToResolveAPIKey") </Condition> </FaultRule>