Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
Co
Zasady weryfikacji klucza interfejsu API umożliwiają wymuszanie weryfikacji kluczy interfejsu API w czasie działania, dzięki czemu tylko aplikacje z zatwierdzonymi kluczami interfejsu API mogą uzyskiwać dostęp do Twoich interfejsów API. Zasady te zapewniają, że klucze interfejsu API są prawidłowe, nie zostały cofnięte i mają uprawnienia do korzystania z określonych zasobów powiązanych z usługami API.
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 będzie znajdować się w zmiennej przepływu o nazwie request.queryparam.apikey. Zmienna request.queryparam.{name} to standardowa zmienna przepływu Edge, która jest wypełniana wartością parametru zapytania przekazywanego 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 będzie znajdować się w zmiennej przepływu o nazwie request.header.x-apikey. Zmienna request.header.{name}
jest standardową zmienną przepływu Edge, która jest wypełniana wartością nagłówka przekazanego
w żądaniu klienta.
Poniższy kod 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>Zasady mogą odwoływać się do dowolnej zmiennej zawierającej klucz. Zasady w tym przykładzie wyodrębniają 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ć zasady Extract Variables (Wyodrębnij zmienne), aby wypełnić zmienną requestAPIKey.key na podstawie parametru zapytania o nazwie myKey, jak pokazano 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 zasady Verify API Key (Weryfikacja klucza interfejsu API) w przypadku prawidłowego klucza interfejsu API. Za pomocą tych zmiennych możesz uzyskać dostęp do informacji takich jak nazwa aplikacji, jej identyfikator oraz informacje o deweloperze lub firmie, która zarejestrowała aplikację. W przykładzie powyżej po wykonaniu zasady Verify API Key (Weryfikuj klucz interfejsu API) używasz zasady Assign Message (Przypisz wiadomość), aby uzyskać dostęp do imienia, nazwiska i adresu e-mail dewelopera.
Wszystkie te zmienne mają prefiks:
verifyapikey.{policy_name}W tym przykładzie nazwa zasady weryfikacji klucza interfejsu API to „verify-api-key”. Dlatego odwołujesz się do imienia dewelopera, który wysyła prośbę, uzyskując dostęp do zmiennej verifyapikey.verify-api-key.developer.firstName.
Poznaj Edge
Informacje o zasadach weryfikacji klucza interfejsu API
Gdy deweloper zarejestruje aplikację w Edge, Edge automatycznie wygeneruje parę klucza konsumenta i klucza tajnego. Klucz klienta i klucz tajny aplikacji możesz sprawdzić w interfejsie Edge lub uzyskać do nich dostęp za pomocą interfejsu Edge API.
Podczas rejestracji aplikacji deweloper wybiera co najmniej 1 produkt interfejsu API, który ma być powiązany z aplikacją. Produkt interfejsu API to zbiór zasobów dostępnych za pomocą serwerów proxy interfejsu API. Następnie programista przekazuje klucz interfejsu API (klucz klienta) w ramach każdego żądania do interfejsu API w usłudze API powiązanej z aplikacją. Więcej informacji znajdziesz w Przeglądzie publikowanych zmian.
Klucze interfejsu API mogą być używane jako tokeny uwierzytelniające lub do uzyskiwania tokenów dostępu OAuth. W OAuth klucze API są nazywane „identyfikatorami klienta”. Nazwy te można stosować zamiennie. Więcej informacji znajdziesz na stronie głównej OAuth.
Podczas wykonywania zasady Verify API Key Edge automatycznie wypełnia zestaw zmiennych przepływu. Więcej informacji znajdziesz w sekcji Zmienne przepływu poniżej.
Odniesienie do elementu
W tych zasadach możesz skonfigurować te elementy i atrybuty:
<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>
Atrybuty <VerifyAPIKey>
Poniższy 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 |
Element <APIKey>
Ten element określa zmienną przepływu, która zawiera klucz interfejsu API. Zazwyczaj 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, znajdziesz go w zmiennej: request.header.x-apikey
| Domyślny | Nie dotyczy |
|---|---|
| Obecność | Wymagane |
| Typ | Ciąg znaków |
Atrybuty
W tabeli poniżej opisano atrybuty elementu <APIKey>.
| Atrybut | Opis | Domyślny | Obecność |
|---|---|---|---|
| ref |
Odwołanie do zmiennej zawierającej klucz interfejsu API. Każda zasada może obejmować tylko 1 lokalizację. |
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>W nagłówku 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 Weryfikuj klucz interfejsu API jest egzekwowana w przypadku prawidłowego klucza interfejsu API, Edge wypełnia zestaw zmiennych przepływu. Te zmienne są dostępne dla zasad lub kodu wykonywanego później w procesie i są często używane do przeprowadzania niestandardowego przetwarzania na podstawie atrybutów klucza interfejsu API, takich jak nazwa aplikacji, produkt interfejsu API używany do autoryzacji klucza lub niestandardowe atrybuty klucza interfejsu API.
Zasady wypełniają kilka różnych typów zmiennych przepływu, w tym:
- Ogólne
- Aplikacja
- Deweloper
- Firma
- Analytics
Każdy typ zmiennej przepływu ma inny prefiks. Wszystkie zmienne są skalarami, z wyjątkiem tych, które są wyraźnie oznaczone jako tablice.
Ogólne zmienne przepływu
W tabeli poniżej znajdziesz ogólne zmienne przepływu wypełniane przez zasadę Weryfikuj klucz 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 (nazywany też kluczem interfejsu API lub kluczem aplikacji) dostarczony przez aplikację wysyłającą żądanie. |
client_secret |
Klucz tajny klienta powiązany z kluczem klienta. |
redirection_uris |
wszystkie identyfikatory URI przekierowania w żądaniu; |
developer.app.id |
Identyfikator aplikacji dewelopera, która wysyła żądanie. |
developer.app.name |
Nazwa aplikacji dewelopera, która wysyła żądanie. |
developer.id |
Identyfikator dewelopera zarejestrowanego jako właściciel aplikacji, która wysyła żądanie. |
developer.{custom_attrib_name} |
Wszystkie atrybuty niestandardowe pochodzące z profilu klucza aplikacji |
DisplayName |
Wartość atrybutu <DisplayName> zasady. |
failed |
Ustaw wartość „true”, gdy weryfikacja klucza interfejsu API zakończy się niepowodzeniem. |
{custom_app_attrib} |
Dowolny atrybut niestandardowy pochodzący z profilu aplikacji. Podaj nazwę atrybutu niestandardowego. |
apiproduct.name* |
Nazwa usługi API użytej do zweryfikowania żądania. |
apiproduct.{custom_attrib_name}* |
Każdy atrybut niestandardowy pochodzący z profilu usługi API. |
apiproduct.developer.quota.limit* |
Limit liczby żądań ustawiony w przypadku produktu interfejsu API (jeśli taki istnieje). |
apiproduct.developer.quota.interval* |
Interwał limitu ustawiony w usłudze API (jeśli występuje). |
apiproduct.developer.quota.timeunit* |
Jednostka czasu limitu ustawiona w produkcie interfejsu API (jeśli jest). |
* Zmienne produktu API są wypełniane automatycznie, jeśli produkty API są skonfigurowane z prawidłowym środowiskiem, proxy i zasobami (pochodzącymi z proxy.pathsuffix). Instrukcje konfigurowania produktów API znajdziesz w artykule Publikowanie interfejsów API za pomocą interfejsu Edge Management API. |
|
Zmienne przepływu aplikacji
Zasady wypełniają te zmienne przepływu zawierające informacje o aplikacji: 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 |
Nie jest używany przez Apigee. |
callbackUrl |
Adres URL wywołania zwrotnego aplikacji. Zwykle używany tylko w przypadku OAuth. |
DisplayName |
Wyświetlana nazwa aplikacji. |
status |
Stan aplikacji, np. „zatwierdzona” lub „cofnięta”. |
apiproducts |
Tablica zawierająca listę usług API powiązanych z aplikacją. |
appFamily |
Dowolna grupa aplikacji zawierająca aplikację lub „domyślna”. |
appParentStatus |
Stan aplikacji nadrzędnej, np. „aktywna” lub „nieaktywna”. |
appType |
Typ aplikacji, czyli „Firma” lub „Deweloper”. |
appParentId |
Identyfikator aplikacji nadrzędnej. |
created_at |
Sygnatura czasowa utworzenia aplikacji. |
created_by |
Adres e-mail dewelopera, który utworzył aplikację. |
last_modified_at |
Sygnatura czasowa ostatniej aktualizacji aplikacji. |
last_modified_by |
Adres e-mail dewelopera, który ostatnio zaktualizował aplikację. |
{app_custom_attributes} |
dowolny atrybut aplikacji niestandardowej; Podaj nazwę atrybutu niestandardowego. |
Zmienne przepływu dewelopera
Zasady wypełniają te zmienne przepływu zawierające informacje o deweloperze: Wszystkie te zmienne mają prefiks:
verifyapikey.{policy_name}.developerNa przykład:
verifyapikey.{policy_name}.developer.id
Dostępne zmienne:
| Zmienna | Opis |
|---|---|
id |
Zwraca {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 |
Sygnatura czasowa utworzenia dewelopera. |
created_by |
Adres e-mail użytkownika, który utworzył dewelopera. |
last_modified_at |
Sygnatura czasowa ostatniej modyfikacji dewelopera. |
last_modified_by |
Adres e-mail użytkownika, który zmodyfikował dewelopera. |
{developer_custom_attributes} |
dowolny atrybut dewelopera niestandardowego. Podaj nazwę atrybutu niestandardowego. |
Company |
Nazwa firmy powiązanej z deweloperem (jeśli taka istnieje). |
Zmienne przepływu firmy
Zasady wypełniają te zmienne przepływu zawierające informacje o firmie: Wszystkie te zmienne mają prefiks:
verifyapikey.{policy_name}.companyNa przykład:
verifyapikey.{policy_name}.company.nameDostępne zmienne:
| Zmienna | Opis |
|---|---|
name |
Nazwa firmy. |
displayName |
Wyświetlana nazwa firmy. |
id |
Identyfikator firmy. |
apps |
Tablica zawierająca listę aplikacji firmowych. |
appOwnerStatus |
Stan właściciela aplikacji: aktywny, nieaktywny lub login_lock.
|
created_at |
Sygnatura czasowa utworzenia firmy. |
created_by |
Adres e-mail użytkownika, który utworzył firmę. |
last_modified_at |
Sygnatura czasowa ostatniej modyfikacji firmy. |
last_modified_by |
Adres e-mail użytkownika, który ostatnio modyfikował firmę. |
{company_custom_attributes} |
dowolny atrybut niestandardowy firmy; Podaj nazwę atrybutu niestandardowego. |
Zmienne Analytics
Gdy w przypadku prawidłowego klucza interfejsu API egzekwowane są zasady „Weryfikuj klucz interfejsu API”, w Analytics automatycznie wypełniane są te zmienne: Te zmienne są wypełniane tylko przez zasady Weryfikuj klucz interfejsu API i zasady OAuth.
Zmiennych i wartości można używać jako wymiarów do tworzenia raportów Analytics, aby uzyskać wgląd w wzorce wykorzystania przez deweloperów i aplikacje.
- apiproduct.name
- developer.app.name
- client_id
- developer.id
Odwołanie do błędu
W tej sekcji opisujemy kody błędów i komunikaty o błędach zwracane przez Edge oraz zmienne błędów ustawiane przez Edge, gdy ta zasada wywołuje błąd. Te informacje są ważne, jeśli tworzysz reguły błędów do obsługi błędów. Więcej informacji znajdziesz w sekcjach Co musisz wiedzieć o błędach związanych z zasadami i Postępowanie w przypadku błędów.
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ą, która ma używany przez Ciebie klucz interfejsu API, ma stan „nieaktywny”. Gdy stan firmy jest ustawiony na nieaktywny, nie możesz uzyskać dostępu do deweloperów ani aplikacji powiązanych z tą firmą. Administrator organizacji może zmienić stan firmy za pomocą interfejsu Management API. Zobacz Ustawianie stanu firmy. |
keymanagement.service.DeveloperStatusNotActive |
401 |
Deweloper, który utworzył aplikację dewelopera z używanym przez Ciebie kluczem interfejsu API, ma stan nieaktywny. Gdy stan dewelopera aplikacji zostanie ustawiony jako nieaktywny, wszystkie aplikacje dewelopera utworzone przez tego dewelopera zostaną dezaktywowane. Administrator z odpowiednimi uprawnieniami (np. administrator organizacji) może zmienić stan dewelopera w ten sposób:
|
keymanagement.service.invalid_client-app_not_approved |
401 | Aplikacja dewelopera powiązana z kluczem interfejsu API zostanie cofnięta. Odwołana aplikacja nie może uzyskiwać dostępu do żadnych produktów API ani wywoływać żadnych interfejsów API zarządzanych przez Apigee Edge. Administrator organizacji może zmienić stan aplikacji dewelopera za pomocą interfejsu Management API. Zapoznaj się z artykułem Zatwierdzanie lub unieważnianie aplikacji związanej z programistą. |
oauth.v2.FailedToResolveAPIKey |
401 | Zasada oczekuje, że klucz interfejsu API będzie znajdować się w zmiennej określonej w elemencie <APIKey> zasady. Ten błąd występuje, gdy oczekiwana zmienna nie istnieje (nie można jej rozpoznać). |
oauth.v2.InvalidApiKey |
401 | Edge otrzymał klucz interfejsu API, ale jest on nieprawidłowy. Gdy Edge wyszukuje klucz w swojej bazie danych, musi on dokładnie odpowiadać kluczowi przesłanemu w żądaniu. Jeśli interfejs API działał wcześniej, sprawdź, czy klucz nie został wygenerowany ponownie. Jeśli klucz został wygenerowany ponownie, podczas próby użycia starego klucza zobaczysz ten błąd. Więcej informacji znajdziesz w artykule Rejestrowanie aplikacji i zarządzanie kluczami interfejsu API. |
oauth.v2.InvalidApiKeyForGivenResource |
401 | Edge otrzymał klucz interfejsu API, który jest prawidłowy, ale nie pasuje do zatwierdzonego klucza w aplikacji dewelopera powiązanej z Twoim serwerem proxy interfejsu API za pomocą produktu. |
Błędy wdrażania
Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego te zasady.
| Nazwa błędu | Przyczyna |
|---|---|
SpecifyValueOrRefApiKey |
Element <APIKey> nie ma określonej wartości ani klucza. |
Zmienne błędów
Te zmienne są ustawiane, gdy wystąpi błąd w czasie działania. Więcej informacji znajdziesz w artykule Co musisz wiedzieć o błędach związanych z zasadami.
| Zmienne | Gdzie | Przykład |
|---|---|---|
fault.name="fault_name" |
fault_name to nazwa błędu podana w tabeli Błędy środowiska wykonawczego powyżej. Nazwa usterki to ostatnia część kodu usterki. | fault.name Matches "FailedToResolveAPIKey" |
oauthV2.policy_name.failed |
policy_name to nazwa zasady, która spowodowała błąd, określona przez użytkownika. | oauthV2.VK-VerifyAPIKey.failed = true |
Przykładowe odpowiedzi o błędach
{
"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>