Zásady omezení přístupu ke službě API Management
V tomto tématu najdete referenční informace pro následující zásady API Management. Informace o přidávání a konfiguraci zásad najdete v tématu zásady v API Management.
Zásady omezení přístupu
- Zkontroluje HLAVIČKU http – vynutila existenci nebo hodnotu hlavičky HTTP.
- Omezení četnosti volání podle předplatného – zabrání špičkám využití rozhraní API omezením četnosti volání na základě jednotlivých předplatných.
- Omezení četnosti volání podle klíče – zabrání špičkám využití rozhraní API omezením četnosti volání, a to za klíčovým základem.
- Omezení počtu IP adres volajících – filtry (povolující a zakazují ) volání z konkrétních IP adres nebo rozsahů adres.
- Nastavení kvóty využití podle předplatného – umožňuje vynutilit obnovitelné nebo maximální objem volání nebo kvótu šířky pásma, a to na základě jednotlivých předplatných.
- Nastavení kvóty využití podle klíče – umožňuje vynutilit obnovitelné nebo maximální objem volání nebo kvótu šířky pásma, a to na základě jednotlivých klíčů.
- Ověří, zda existence tokenu JWT vynutila platnost a zda byla extrahována z buď zadaného záhlaví protokolu HTTP, nebo zadaného parametru dotazu.
- Ověřit certifikát klienta – vyhodnotí , že certifikát prezentovaný klientem do instance API Management odpovídá zadaným ověřovacím pravidlům a deklaracím.
Tip
Zásady omezení přístupu můžete použít v různých oborech pro různé účely. Můžete například zabezpečit celé rozhraní API pomocí ověřování AAD, a to tak, že použijete validate-jwt zásady na úrovni rozhraní API, nebo ho můžete použít na úrovni operace rozhraní API a použít k podrobnějšímu claims řízení.
Kontrolovat hlavičku HTTP
Pomocí check-header zásady můžete vyhovět, že žádost má určenou HLAVIČKU http. Volitelně můžete kontrolovat, zda má hlavička určitou hodnotu, nebo kontrolovat Rozsah povolených hodnot. Pokud se ověření nepovede, zásada ukončí zpracování žádosti a vrátí stavový kód HTTP a chybovou zprávu určenou zásadou.
Prohlášení o zásadách
<check-header name="header name" failed-check-httpcode="code" failed-check-error-message="message" ignore-case="true">
<value>Value1</value>
<value>Value2</value>
</check-header>
Příklad
<check-header name="Authorization" failed-check-httpcode="401" failed-check-error-message="Not authorized" ignore-case="false">
<value>f6dc69a089844cf6b2019bae6d36fac8</value>
</check-header>
Elementy
| Název | Popis | Povinné |
|---|---|---|
| check-Header | Kořenový element. | Yes |
| hodnota | Povolená hodnota hlavičky protokolu HTTP. Je-li zadána více elementů hodnot, je tato kontrolu považována za úspěšnou, pokud je jedna z hodnot shodná. | No |
Atributy
| Název | Popis | Povinné | Výchozí |
|---|---|---|---|
| neúspěšné-chyba-chyba-zpráva | Chybová zpráva, která se má vrátit v těle odpovědi HTTP, pokud hlavička neexistuje nebo má neplatnou hodnotu. Tato zpráva musí mít správně uvozené speciální znaky. | Yes | – |
| chyba-check-httpCode | Stavový kód HTTP, který se má vrátit, pokud hlavička neexistuje nebo má neplatnou hodnotu. | Yes | – |
| záhlaví – název | Název hlavičky HTTP, která se má ověřit | Yes | – |
| ignorovat – případ | Lze nastavit na hodnotu true nebo false. Pokud je hodnota nastavená na true Case, ignoruje se při porovnání hodnoty hlavičky se sadou přijatelných hodnot. | Yes | – |
Využití
Tyto zásady se dají použít v následujících oddílech a oborechzásad.
Oddíly zásad: příchozí, odchozí
Obory zásad: všechny rozsahy
Omezení četnosti volání podle předplatného
rate-limitZásady zabrání špičkám využití rozhraní API na základě předplatného, a to omezením rychlosti volání na zadaný počet za zadané časové období. Pokud je překročena rychlost volání, volající obdrží 429 Too Many Requests kód stavu odpovědi.
Důležité
Tato zásada se dá pro dokument zásad použít jenom jednou.
Výrazy zásad nelze použít v žádném z atributů zásad pro tuto zásadu.
Upozornění
Vzhledem k distribuované povaze architektury omezování není omezení rychlosti nikdy zcela přesné. Rozdíl mezi nakonfigurovaným a skutečným počtem povolených požadavků se liší v závislosti na objemu a frekvenci požadavků, latenci back-endu a dalších faktorech.
Poznámka
Pro pochopení rozdílu mezi omezeními a kvótami získáte informace v části omezení přenosové rychlosti a kvóty.
Prohlášení o zásadách
<rate-limit calls="number" renewal-period="seconds">
<api name="API name" id="API id" calls="number" renewal-period="seconds">
<operation name="operation name" id="operation id" calls="number" renewal-period="seconds"
retry-after-header-name="header name"
retry-after-variable-name="policy expression variable name"
remaining-calls-header-name="header name"
remaining-calls-variable-name="policy expression variable name"
total-calls-header-name="header name"/>
</api>
</rate-limit>
Příklad
V následujícím příkladu je omezení četnosti předplatného na 20 volání za 90 sekund. Po každém spuštění zásad jsou zbývající volání povolená v daném časovém období uložená v proměnné remainingCallsPerSubscription .
<policies>
<inbound>
<base />
<rate-limit calls="20" renewal-period="90" remaining-calls-variable-name="remainingCallsPerSubscription"/>
</inbound>
<outbound>
<base />
</outbound>
</policies>
Elementy
| Název | Popis | Povinné |
|---|---|---|
| frekvence – omezení | Kořenový element. | Yes |
| api | Přidejte jeden nebo více těchto prvků k omezení četnosti volání rozhraní API v rámci produktu. Omezení rychlosti volání rozhraní API a produktů se aplikují nezávisle. Na rozhraní API se dá odkazovat prostřednictvím name nebo id . Pokud jsou zadány oba atributy, budou id použity a name budou ignorovány. |
No |
| operation | Přidejte jeden nebo více těchto prvků k omezení četnosti volání operací v rámci rozhraní API. Omezení frekvence volání produktů, rozhraní API a operací se aplikují nezávisle. Na operaci lze odkazovat prostřednictvím name nebo id . Pokud jsou zadány oba atributy, budou id použity a name budou ignorovány. |
No |
Atributy
| Název | Popis | Povinné | Výchozí |
|---|---|---|---|
| name | Název rozhraní API, pro které se má použít limit přenosové rychlosti | Yes | – |
| Volání | Maximální povolený celkový počet volání během časového intervalu zadaného v renewal-period . |
Yes | – |
| renewal-period | Délka v sekundách posuvného okna, během kterého by počet povolených požadavků neměl překročit hodnotu zadanou v calls . Maximální povolená hodnota: 300 sekund. |
Yes | – |
| retry-after-header-name | Název hlavičky odpovědi, jejíž hodnota je doporučený interval opakování v sekundách po překročení zadané frekvence volání. | No | – |
| retry-after-variable-name | Název proměnné výrazu zásad, která ukládá doporučený interval opakování v sekundách po překročení zadané frekvence volání. | No | – |
| remaining-calls-header-name | Název hlavičky odpovědi, jejíž hodnota po každém spuštění zásady je počet zbývajících volání povolených pro časový interval zadaný v renewal-period . |
No | – |
| remaining-calls-variable-name | Název proměnné výrazu zásad, který po každém spuštění zásady ukládá počet zbývajících volání povolených pro časový interval zadaný v renewal-period . |
No | – |
| total-calls-header-name | Název hlavičky odpovědi, jejíž hodnota je hodnota zadaná v calls . |
No | – |
Využití
Tuto zásadu můžete použít v následujících oddílech zásad a oborech.
Oddíly zásad: příchozí
Obory zásad: produkt, rozhraní API, operace
Omezení frekvence volání podle klíče
Důležité
Tato funkce není dostupná na úrovni Consumption API Management.
Zásady brání špičkám využití rozhraní API pro každý klíč omezením call rate na zadané číslo rate-limit-by-key za zadané časové období. Klíč může mít libovolnou řetězcovou hodnotu a obvykle se poskytuje pomocí výrazu zásad. Můžete přidat volitelnou podmínku přírůstku, která určuje, které požadavky se mají do limitu započítat. Při překročení této frekvence volání obdrží volající 429 Too Many Requests stavový kód odpovědi.
Další informace a příklady těchto zásad najdete v tématu Pokročilé omezování požadavků pomocí Azure API Management.
Upozornění
Vzhledem k distribuované povaze architektury omezování není omezování rychlosti nikdy úplně přesné. Rozdíl mezi nakonfigurovaným a skutečným počtem povolených požadavků se liší v závislosti na objemu a frekvenci požadavků, latenci back-endu a dalších faktorech.
Poznámka
Informace o rozdílech mezi limity přenosové rychlosti a kvótami najdete v tématu Omezení přenosové rychlosti a kvóty.
Prohlášení o zásadách
<rate-limit-by-key calls="number"
renewal-period="seconds"
increment-condition="condition"
counter-key="key value"
retry-after-header-name="header name" retry-after-variable-name="policy expression variable name"
remaining-calls-header-name="header name" remaining-calls-variable-name="policy expression variable name"
total-calls-header-name="header name"/>
Příklad
V následujícím příkladu je omezení rychlosti 10 volání za 60 sekund klíčované IP adresou volajícího. Po každém spuštění zásad se zbývající volání povolená v časovém období uloží do proměnné remainingCallsPerIP .
<policies>
<inbound>
<base />
<rate-limit-by-key calls="10"
renewal-period="60"
increment-condition="@(context.Response.StatusCode == 200)"
counter-key="@(context.Request.IpAddress)"
remaining-calls-variable-name="remainingCallsPerIP"/>
</inbound>
<outbound>
<base />
</outbound>
</policies>
Elementy
| Název | Popis | Povinné |
|---|---|---|
| rate-limit-by-key | Kořenový element. | Yes |
Atributy
| Název | Popis | Povinné | Výchozí |
|---|---|---|---|
| Volání | Maximální povolený celkový počet volání během časového intervalu zadaného v renewal-period . Výraz zásad je povolený. |
Yes | – |
| klíč čítače | Klíč, který se má použít pro zásady omezení přenosové rychlosti. | Yes | – |
| increment-condition | Logický výraz určující, jestli se má požadavek započítávat do rychlosti ( true ). |
No | – |
| renewal-period | Délka v sekundách posuvného okna, během kterého by počet povolených požadavků neměl překročit hodnotu zadanou v calls . Výraz zásad je povolený. Maximální povolená hodnota: 300 sekund. |
Yes | – |
| retry-after-header-name | Název hlavičky odpovědi, jejíž hodnota je doporučený interval opakování v sekundách po překročení zadané frekvence volání. | No | – |
| retry-after-variable-name | Název proměnné výrazu zásad, která ukládá doporučený interval opakování v sekundách po překročení zadané frekvence volání. | No | – |
| remaining-calls-header-name | Název hlavičky odpovědi, jejíž hodnota po každém spuštění zásady je počet zbývajících volání povolených pro časový interval zadaný v renewal-period . |
No | – |
| remaining-calls-variable-name | Název proměnné výrazu zásad, který po každém spuštění zásady ukládá počet zbývajících volání povolených pro časový interval zadaný v renewal-period . |
No | – |
| total-calls-header-name | Název hlavičky odpovědi, jejíž hodnota je hodnota zadaná v calls . |
No | – |
Využití
Tuto zásadu můžete použít v následujících oddílech zásad a oborech.
Oddíly zásad: příchozí
Obory zásad: všechny rozsahy
Omezení IP adres volajícího
ip-filterFiltry zásad (povolují/zakazuje) volání z konkrétních IP adres nebo rozsahů adres.
Prohlášení o zásadách
<ip-filter action="allow | forbid">
<address>address</address>
<address-range from="address" to="address" />
</ip-filter>
Příklad
V následujícím příkladu zásada povoluje pouze žádosti přicházející buď z jedné IP adresy, nebo z rozsahu zadaných IP adres.
<ip-filter action="allow">
<address>13.66.201.169</address>
<address-range from="13.66.140.128" to="13.66.140.143" />
</ip-filter>
Elementy
| Název | Popis | Povinné |
|---|---|---|
| filtr IP adres | Kořenový element. | Yes |
| adresa | Určuje jednu IP adresu, na které se má filtrovat. | addressJe vyžadován alespoň jeden address-range prvek nebo. |
| adresový rozsah z = "adresa" na = "adresa" | Určuje rozsah IP adres, na kterých se má filtrovat. | addressJe vyžadován alespoň jeden address-range prvek nebo. |
Atributy
| Název | Popis | Povinné | Výchozí |
|---|---|---|---|
| adresový rozsah z = "adresa" na = "adresa" | Rozsah IP adres, pro které chcete povolit nebo odepřít přístup. | Požadováno při address-range použití elementu. |
– |
| akce filtru IP = "povolení | zakázat" | Určuje, jestli se mají u zadaných IP adres a rozsahů povolit volání. | Yes | – |
Využití
Tyto zásady se dají použít v následujících oddílech a oborechzásad.
- Oddíly zásad: příchozí
- Obory zásad: všechny rozsahy
Nastavení kvóty využití podle předplatného
Tato quota zásada vynutila obnovitelné nebo maximální objem volání nebo kvótu šířky pásma na jednotlivých předplatných.
Důležité
Tato zásada se dá pro dokument zásad použít jenom jednou.
Výrazy zásad nelze použít v žádném z atributů zásad pro tuto zásadu.
Poznámka
Pro pochopení rozdílu mezi omezeními a kvótami získáte informace v části omezení přenosové rychlosti a kvóty.
Prohlášení o zásadách
<quota calls="number" bandwidth="kilobytes" renewal-period="seconds">
<api name="API name" id="API id" calls="number" renewal-period="seconds" />
<operation name="operation name" id="operation id" calls="number" renewal-period="seconds" />
</api>
</quota>
Příklad
<policies>
<inbound>
<base />
<quota calls="10000" bandwidth="40000" renewal-period="3600" />
</inbound>
<outbound>
<base />
</outbound>
</policies>
Elementy
| Název | Popis | Povinné |
|---|---|---|
| kvóta | Kořenový element. | Yes |
| api | Přidejte jeden nebo více těchto prvků pro uložení kvóty volání rozhraní API v rámci produktu. Kvóty volání produktů a rozhraní API se aplikují nezávisle. Na rozhraní API se dá odkazovat prostřednictvím name nebo id . Pokud jsou zadány oba atributy, budou id použity a name budou ignorovány. |
No |
| operation | Přidejte jeden nebo více těchto prvků pro uložení kvóty volání operací v rámci rozhraní API. Kvóty volání produktů, rozhraní API a operací se aplikují nezávisle. Na operaci lze odkazovat prostřednictvím name nebo id . Pokud jsou zadány oba atributy, budou id použity a name budou ignorovány. |
No |
Atributy
| Název | Popis | Povinné | Výchozí |
|---|---|---|---|
| name | Název rozhraní API nebo operace, pro kterou platí kvóta. | Yes | – |
| připojení | Maximální celkový počet kilobajtů povolený v časovém intervalu zadaném v renewal-period . |
calls bandwidth Musí být zadány oba, nebo oba současně. |
– |
| volání | Maximální celkový počet volání povolených v časovém intervalu zadaném v renewal-period . |
calls bandwidth Musí být zadány oba, nebo oba současně. |
– |
| prodloužení platnosti – období | Časové období v sekundách, po kterém se kvóta resetuje. Pokud je nastavená na 0 perioda, nastaví se na nekonečné. |
Yes | – |
Využití
Tyto zásady se dají použít v následujících oddílech a oborechzásad.
- Oddíly zásad: příchozí
- Obory zásad: produkt
Nastavit kvótu využití podle klíče
Důležité
Tato funkce není k dispozici v API Management úrovně spotřeby .
Tato quota-by-key zásada vynutila obnovitelné nebo maximální objem volání nebo kvótu šířky pásma na jednotlivých klíčích. Klíč může obsahovat libovolnou řetězcovou hodnotu a obvykle se poskytuje pomocí výrazu zásad. Můžete přidat volitelnou podmínku přírůstku, která určuje, které požadavky se mají do kvóty počítat. Pokud by více zásad mohl zvýšit stejnou hodnotu klíče, zvyšuje se pouze jednou za požadavek. Pokud je překročena rychlost volání, volající obdrží 403 Forbidden kód stavu odpovědi.
Další informace a příklady těchto zásad najdete v tématu Pokročilé omezování požadavků pomocí Azure API Management.
Poznámka
Pro pochopení rozdílu mezi omezeními a kvótami získáte informace v části omezení přenosové rychlosti a kvóty.
Prohlášení o zásadách
<quota-by-key calls="number"
bandwidth="kilobytes"
renewal-period="seconds"
increment-condition="condition"
counter-key="key value" />
Příklad
V následujícím příkladu je kvóta nastavena podle IP adresy volajícího.
<policies>
<inbound>
<base />
<quota-by-key calls="10000" bandwidth="40000" renewal-period="3600"
increment-condition="@(context.Response.StatusCode >= 200 && context.Response.StatusCode < 400)"
counter-key="@(context.Request.IpAddress)" />
</inbound>
<outbound>
<base />
</outbound>
</policies>
Elementy
| Název | Popis | Povinné |
|---|---|---|
| kvóta | Kořenový element. | Yes |
Atributy
| Název | Popis | Povinné | Výchozí |
|---|---|---|---|
| připojení | Maximální celkový počet kilobajtů povolený v časovém intervalu zadaném v renewal-period . |
calls bandwidth Musí být zadány oba, nebo oba současně. |
– |
| volání | Maximální celkový počet volání povolených v časovém intervalu zadaném v renewal-period . |
calls bandwidth Musí být zadány oba, nebo oba současně. |
– |
| Counter – klíč | Klíč, který se má použít pro zásady kvót | Yes | – |
| přírůstek-podmínka | Logický výraz určující, zda má být požadavek počítán k kvótě ( true ) |
No | – |
| prodloužení platnosti – období | Časové období v sekundách, po kterém se kvóta resetuje. Pokud je nastavená na 0 perioda, nastaví se na nekonečné. |
Yes | – |
Poznámka
counter-keyHodnota atributu musí být jedinečná napříč všemi rozhraními API ve API Management, pokud nechcete sdílet součet mezi ostatními rozhraními API.
Využití
Tyto zásady se dají použít v následujících oddílech a oborechzásad.
- Oddíly zásad: příchozí
- Obory zásad: všechny rozsahy
Ověřit token JWT
validate-jwtZásady vynutily existenci a platnost tokenu JWT (JSON web token) extrahované ze zadané HLAVIČKY http nebo zadaného parametru dotazu.
Důležité
Tato validate-jwt zásada vyžaduje, aby exp registrovaná deklarace identity byla obsažena v tokenu JWT, pokud require-expiration-time není zadána vlastnost a nastavena na false .
Tato validate-jwt zásada podporuje algoritmy podepisování HS256 a RS256. Pro HS256 musí být klíč poskytnutý jako vložený v rámci zásady ve formě kódované v kódování Base64. Pro RS256 může být klíč poskytnutý buď prostřednictvím koncového bodu konfigurace otevřeného ID, nebo zadáním ID nahraného certifikátu, který obsahuje veřejný klíč nebo dvojici exponentu veřejného klíče.
validate-jwtZásady podporují tokeny šifrované pomocí symetrických klíčů pomocí následujících šifrovacích algoritmů: A128CBC-HS256, A192CBC-HS384, A256CBC-HS512.
Prohlášení o zásadách
<validate-jwt
header-name="name of http header containing the token (use query-parameter-name attribute if the token is passed in the URL)"
failed-validation-httpcode="http status code to return on failure"
failed-validation-error-message="error message to return on failure"
token-value="expression returning JWT token as a string"
require-expiration-time="true|false"
require-scheme="scheme"
require-signed-tokens="true|false"
clock-skew="allowed clock skew in seconds"
output-token-variable-name="name of a variable to receive a JWT object representing successfully validated token">
<openid-config url="full URL of the configuration endpoint, e.g. https://login.constoso.com/openid-configuration" />
<issuer-signing-keys>
<key>base64 encoded signing key</key>
<!-- if there are multiple keys, then add additional key elements -->
</issuer-signing-keys>
<decryption-keys>
<key>base64 encoded signing key</key>
<!-- if there are multiple keys, then add additional key elements -->
</decryption-keys>
<audiences>
<audience>audience string</audience>
<!-- if there are multiple possible audiences, then add additional audience elements -->
</audiences>
<issuers>
<issuer>issuer string</issuer>
<!-- if there are multiple possible issuers, then add additional issuer elements -->
</issuers>
<required-claims>
<claim name="name of the claim as it appears in the token" match="all|any" separator="separator character in a multi-valued claim">
<value>claim value as it is expected to appear in the token</value>
<!-- if there is more than one allowed values, then add additional value elements -->
</claim>
<!-- if there are multiple possible allowed values, then add additional value elements -->
</required-claims>
</validate-jwt>
Příklady
Ověřování jednoduchých tokenů
<validate-jwt header-name="Authorization" require-scheme="Bearer">
<issuer-signing-keys>
<key>{{jwt-signing-key}}</key> <!-- signing key specified as a named value -->
</issuer-signing-keys>
<audiences>
<audience>@(context.Request.OriginalUrl.Host)</audience> <!-- audience is set to API Management host name -->
</audiences>
<issuers>
<issuer>http://contoso.com/</issuer>
</issuers>
</validate-jwt>
Ověřování tokenu pomocí certifikátu RSA
<validate-jwt header-name="Authorization" require-scheme="Bearer">
<issuer-signing-keys>
<key certificate-id="my-rsa-cert" /> <!-- signing key specified as certificate ID, enclosed in double-quotes -->
</issuer-signing-keys>
<audiences>
<audience>@(context.Request.OriginalUrl.Host)</audience> <!-- audience is set to API Management host name -->
</audiences>
<issuers>
<issuer>http://contoso.com/</issuer>
</issuers>
</validate-jwt>
ověřování tokenu Azure Active Directory
<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
<openid-config url="https://login.microsoftonline.com/contoso.onmicrosoft.com/.well-known/openid-configuration" />
<audiences>
<audience>25eef6e4-c905-4a07-8eb4-0d08d5df8b3f</audience>
</audiences>
<required-claims>
<claim name="id" match="all">
<value>insert claim here</value>
</claim>
</required-claims>
</validate-jwt>
Azure Active Directory Ověření tokenu B2C
<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
<openid-config url="https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/b2c_1_signin/v2.0/.well-known/openid-configuration" />
<audiences>
<audience>d313c4e4-de5f-4197-9470-e509a2f0b806</audience>
</audiences>
<required-claims>
<claim name="id" match="all">
<value>insert claim here</value>
</claim>
</required-claims>
</validate-jwt>
Autorizace přístupu k operacím na základě deklarací identity tokenů
Tento příklad ukazuje, jak použít zásadu ověření JWT k autorizaci přístupu k operacím na základě hodnoty deklarací identity tokenu.
<validate-jwt header-name="Authorization" require-scheme="Bearer" output-token-variable-name="jwt">
<issuer-signing-keys>
<key>{{jwt-signing-key}}</key> <!-- signing key is stored in a named value -->
</issuer-signing-keys>
<audiences>
<audience>@(context.Request.OriginalUrl.Host)</audience>
</audiences>
<issuers>
<issuer>contoso.com</issuer>
</issuers>
<required-claims>
<claim name="group" match="any">
<value>finance</value>
<value>logistics</value>
</claim>
</required-claims>
</validate-jwt>
<choose>
<when condition="@(context.Request.Method == "POST" && !((Jwt)context.Variables["jwt"]).Claims["group"].Contains("finance"))">
<return-response>
<set-status code="403" reason="Forbidden" />
</return-response>
</when>
</choose>
Elementy
| Element | Popis | Povinné |
|---|---|---|
| ověřit – JWT | Kořenový element. | Yes |
| publikum | Obsahuje seznam přijatelných deklarací cílové skupiny, které mohou být k dispozici na tokenu. Pokud je přítomno více hodnot cílové skupiny, pak se každá hodnota vyzkouší, dokud nebudou vyčerpány všechny (v takovém případě ověření selže) nebo dokud jeden neuspěje. Je nutné zadat alespoň jednu cílovou skupinu. | No |
| Vystavitel – podpisové klíče | Seznam klíčů zabezpečení kódovaných v kódování Base64 používaných k ověřování podepsaných tokenů. Pokud je k dispozici více klíčů zabezpečení, pak se každý klíč vyzkouší, dokud nebudou vyčerpány všechny (v takovém případě selže ověřování) nebo jedna úspěšná (užitečná pro výměnu tokenu). Klíčové prvky mají volitelný id atribut, který se používá pro porovnání s kid deklarací identity. Případně zadejte podpisový klíč vystavitele pomocí: - certificate-id v části formát <key certificate-id="mycertificate" /> Zadejte identifikátor entity certifikátu nahrané do API Management– n Páry a exponenty RSA e ve formátu <key n="<modulus>" e="<exponent>" /> pro určení parametrů RSA ve formátu kódovaném v base64url |
No |
| dešifrování – klíče | Seznam klíčů zakódovaných ve formátu base64, které slouží k dešifrování tokenů. Pokud je k dispozici více klíčů zabezpečení, pak se každý klíč vyzkouší, dokud nebudou vyčerpány všechny klíče (v takovém případě ověření selže) nebo je klíč úspěšný. Klíčové prvky mají volitelný id atribut, který se používá pro porovnání s kid deklarací identity.Případně zadejte dešifrovací klíč pomocí: - certificate-id v části formát <key certificate-id="mycertificate" /> Zadejte identifikátor entity certifikátu nahrané do API Management |
No |
| vystavitelů | Seznam přijatelných objektů zabezpečení, které token vystavily. Pokud je přítomno více hodnot vystavitelů, pak se každá hodnota vyzkouší, dokud nejsou vyčerpány všechny (v takovém případě ověření selže) nebo dokud jeden neuspěje. | No |
| OpenID-config | Prvek použitý k zadání koncového bodu konfigurace kompatibilního otevřeného ID, ze kterého lze získat podpisové klíče a vystavitele. | No |
| požadováno – deklarace identity | Obsahuje seznam deklarací identity, které mají být přítomny na tokenu, aby se dalo považovat za platný. Pokud match je atribut nastavený na all hodnotu každá hodnota deklarace v zásadě, musí být v tokenu přítomná, aby bylo ověření úspěšné. Pokud match je atribut nastaven na any alespoň jednu deklaraci identity, musí být v tokenu přítomen, aby bylo ověření úspěšné. |
No |
Atributy
| Název | Popis | Povinné | Výchozí |
|---|---|---|---|
| hodiny – zkosit | TimeSpan. Slouží k určení maximálního očekávaného časového rozdílu mezi systémovými hodinami vystavitele tokenu a API Management instancí. | No | 0 sekund |
| failed-validation-error-message | Chybová zpráva, která se má vrátit v textu odpovědi HTTP, pokud JWT neprojde ověřením. Tato zpráva musí obsahovat všechny speciální znaky, které jsou správně uvozeny. | No | Výchozí chybová zpráva závisí na problému s ověřením, například na tom, že není k dispozici JWT. |
| failed-validation-httpcode | Stavový kód HTTP, který se má vrátit, pokud JWT neprojde ověřením. | No | 401 |
| header-name (název hlavičky) | Název hlavičky HTTP, ve které je token. | Je nutné header-name query-parameter-name token-value zadat jednu z hodnot nebo . |
– |
| query-parameter-name | Název parametru dotazu, který token obsahuje. | Je nutné header-name query-parameter-name token-value zadat jednu z hodnot nebo . |
– |
| hodnota tokenu | Výraz vracející řetězec obsahující token JWT. Jako součást hodnoty tokenu se nesmí Bearer vracet. |
Je nutné header-name query-parameter-name token-value zadat jednu z hodnot nebo . |
– |
| id | Atribut v elementu umožňuje zadat řetězec, který se bude shodovat s deklarací identity v tokenu (pokud je k dispozici), abyste zjistili vhodný klíč, který se má použít pro id key ověření kid podpisu. |
No | – |
| match | Atribut elementu určuje, jestli musí být každá hodnota deklarace identity v zásadách přítomná v tokenu, aby match claim ověření bylo úspěšné. Možné hodnoty:- all – Každá hodnota deklarace identity v zásadách musí být v tokenu, aby ověření bylo úspěšné.- any – Token musí obsahovat alespoň jednu hodnotu deklarace identity, aby ověření bylo úspěšné. |
No | Vše |
| vyžadovat čas vypršení platnosti | Boolean. Určuje, jestli token vyžaduje deklaraci identity vypršení platnosti. | No | true |
| require-scheme (schéma vyžadování) | Název schématu tokenu, například "Bearer". Když je tento atribut nastavený, zásada zajistí, že se zadané schéma nachází v hodnotě autorizační hlavičky. | No | – |
| vyžadování podepsaných tokenů | Boolean. Určuje, jestli musí být token podepsaný. | No | true |
| Oddělovač | Řetězec. Určuje oddělovač (např. ","), který se použije k extrahování sady hodnot z deklarace identity s více hodnotami. | No | – |
| url | Open ID configuration endpoint URL from where Open ID configuration metadata can be obtained. Odpověď by měla být podle specifikací definovaných na adrese URL: https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata . Například Azure Active Directory následující adresu URL: https://login.microsoftonline.com/{tenant-name}/.well-known/openid-configuration nahraďte názvem tenanta adresáře, například contoso.onmicrosoft.com . |
Yes | – |
| output-token-variable-name | Řetězec. Název kontextové proměnné, která při úspěšném ověření tokenu obdrží hodnotu tokenu jako objekt Jwt typu |
No | – |
Využití
Tuto zásadu můžete použít v následujících oddílech zásad a oborech.
- Oddíly zásad: příchozí
- Obory zásad: všechny obory
Ověření klientského certifikátu
Pomocí zásad vynucovat, aby certifikát prezentované klientem instanci API Management odpovídal zadaným ověřovacím pravidlům a deklaraci identity, jako je předmět nebo vystavitel pro jednu nebo více validate-client-certificate identit certifikátů.
Aby byl klientský certifikát považován za platný, musí odpovídat všem ověřovacím pravidlům definovaným atributy v elementu nejvyšší úrovně a musí odpovídat všem definovaným deklaracem identity alespoň pro jednu z definovaných identit.
Pomocí této zásady můžete kontrolovat vlastnosti příchozího certifikátu oproti požadovaným vlastnostem. Tuto zásadu použijte také k přepsání výchozího ověřování klientských certifikátů v těchto případech:
- Pokud jste nahráli vlastní certifikáty certifikační autority pro ověření požadavků klientů na spravovanou bránu
- Pokud jste nakonfigurovali vlastní certifikační autority pro ověřování požadavků klientů na bránu spravovanou své držitelem
Další informace o vlastních certifikátech certifikační autority a certifikačních autoritách najdete v tématu Postup přidání vlastního certifikátu certifikační autority v Azure API Management.
Prohlášení o zásadách
<validate-client-certificate
validate-revocation="true|false"
validate-trust="true|false"
validate-not-before="true|false"
validate-not-after="true|false"
ignore-error="true|false">
<identities>
<identity
thumbprint="certificate thumbprint"
serial-number="certificate serial number"
common-name="certificate common name"
subject="certificate subject string"
dns-name="certificate DNS name"
issuer-subject="certificate issuer"
issuer-thumbprint="certificate issuer thumbprint"
issuer-certificate-id="certificate identifier" />
</identities>
</validate-client-certificate>
Příklad
Následující příklad ověří klientský certifikát tak, aby odpovídal výchozím ověřovacím pravidlům zásad, a zkontroluje, jestli předmět a název vystavitele odpovídají zadaným hodnotám.
<validate-client-certificate
validate-revocation="true"
validate-trust="true"
validate-not-before="true"
validate-not-after="true"
ignore-error="false">
<identities>
<identity
subject="C=US, ST=Illinois, L=Chicago, O=Contoso Corp., CN=*.contoso.com"
issuer-subject="C=BE, O=FabrikamSign nv-sa, OU=Root CA, CN=FabrikamSign Root CA" />
</identities>
</validate-client-certificate>
Elementy
| Element | Popis | Povinné |
|---|---|---|
| validate-client-certificate | Kořenový element. | Yes |
| Identit | Obsahuje seznam identit s definovanými deklaracemi identity v klientském certifikátu. | No |
Atributy
| Název | Popis | Povinné | Výchozí |
|---|---|---|---|
| ověření odvolání | Boolean. Určuje, jestli se má certifikát ověřit proti seznamu odvolaných certifikátů online. | ne | Ano |
| ověření důvěryhodnosti | Boolean. Určuje, jestli má ověření selhat v řetězu případů, které nelze úspěšně vytvořit pro důvěryhodnou certifikační autoritu. | ne | Ano |
| validate-not-before | Boolean. Ověří hodnotu proti aktuálnímu času. | ne | Ano |
| ověření ne po | Boolean. Ověří hodnotu proti aktuálnímu času. | ne | Ano |
| ignore-error | Boolean. Určuje, jestli má zásada pokračovat na další obslužnou rutinu nebo přejít na chybu při neúspěšných ověřeních. | ne | Ne |
| identity | Řetězec. Kombinace hodnot deklarací identity certifikátu, které dělají certifikát platným. | ano | – |
| Miniatura | Kryptografický otisk certifikátu. | ne | – |
| sériové číslo | Sériové číslo certifikátu. | ne | – |
| běžný název | Běžný název certifikátu (část řetězce předmětu). | ne | – |
| subject | Řetězec předmětu. Musí dodržovat formát Rozlišující název. | ne | – |
| název dns | Hodnota položky dnsName uvnitř deklarace identity Alternativní název subjektu. | ne | – |
| vystavitel předmětu | Předmět vystavitele. Musí dodržovat formát Rozlišující název. | ne | – |
| kryptografický otisk vystavitele | Kryptografický otisk vystavitele. | ne | – |
| issuer-certificate-id | Identifikátor existující entity certifikátu představující veřejný klíč vystavitele Vzájemně se vylučují s jinými atributy vystavitele. | ne | – |
Využití
Tuto zásadu můžete použít v následujících oddílech zásad a oborech.
- Oddíly zásad: příchozí
- Obory zásad: všechny obory
Další kroky
Další informace o práci se zásadami najdete v těchto tématu:
- Zásady v API Management
- Transformovat rozhraní API
- Referenční informace o zásadách pro úplný seznam prohlášení o zásadách a jejich nastavení
- Ukázky zásad