Zasada VerificationAPIKey

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>

&lt;VerifyAPIKey&gt; 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 name może zawierać litery, cyfry, spacje, łączniki, podkreślenia i kropki. Ta wartość nie może przekracza 255 znaków.

Opcjonalnie możesz użyć elementu <DisplayName> do oznaczenia zasady jako edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.

Nie dotyczy Wymagane
continueOnError

Ustaw jako false, aby w przypadku niepowodzenia zasady zwracany był błąd. To normalne w przypadku większości zasad.

Ustaw jako true, aby wykonywanie przepływu było kontynuowane nawet po zastosowaniu zasady niepowodzenie.

fałsz Opcjonalnie
enabled

Aby egzekwować zasadę, ustaw wartość true.

Aby wyłączyć zasadę, ustaw wartość false. Te zasady nie będą jest wymuszane nawet wtedy, gdy jest ono połączone z przepływem.

prawda Opcjonalnie
async

Ten atrybut został wycofany.

fałsz Wycofano

&lt;DisplayName&gt; 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 name zasady otrzyma wartość .

Obecność Opcjonalnie
Typ Ciąg znaków

&lt;APIKey&gt; 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 &lt;APIKey&gt; . 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>

Powiązane artykuły