Políticas de restrição de acesso do Gerenciamento de APIAPI Management access restriction policies

Este tópico fornece uma referência para as políticas de Gerenciamento de API a seguir.This topic provides a reference for the following API Management policies. Para obter mais informações sobre como adicionar e configurar políticas, consulte Políticas de Gerenciamento de API.For information on adding and configuring policies, see Policies in API Management.

Políticas de restrição de acessoAccess restriction policies

Dica

Você pode usar políticas de restrição de acesso em escopos diferentes para finalidades diferentes.You can use access restriction policies in different scopes for different purposes. Por exemplo, você pode proteger toda a API com a autenticação do AAD aplicando a validate-jwt política no nível de API ou pode aplicá-la no nível de operação da API e usá claims -la para um controle mais granular.For example, you can secure the whole API with AAD authentication by applying the validate-jwt policy on the API level or you can apply it on the API operation level and use claims for more granular control.

Verificar cabeçalho HTTPCheck HTTP header

Use a política check-header para impor que uma solicitação tem um cabeçalho HTTP especificado.Use the check-header policy to enforce that a request has a specified HTTP header. Você pode, opcionalmente, verificar se o cabeçalho tem um valor específico ou procurar um intervalo de valores permitidos.You can optionally check to see if the header has a specific value or check for a range of allowed values. Se a verificação falhar, a política encerrará o processamento da solicitação e retornará a mensagem de erro e código de status HTTP especificada pela política.If the check fails, the policy terminates request processing and returns the HTTP status code and error message specified by the policy.

Declaração de políticaPolicy statement

<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>

ExemploExample

<check-header name="Authorization" failed-check-httpcode="401" failed-check-error-message="Not authorized" ignore-case="false">
    <value>f6dc69a089844cf6b2019bae6d36fac8</value>
</check-header>

ElementosElements

NomeName DescriçãoDescription NecessárioRequired
check-headercheck-header Elemento raiz.Root element. SimYes
valuevalue Valor do cabeçalho HTTP permitido.Allowed HTTP header value. Quando vários elementos de valor são especificados, a verificação é considerada um sucesso se qualquer um dos valores é uma correspondência.When multiple value elements are specified, the check is considered a success if any one of the values is a match. NãoNo

AtributosAttributes

NomeName DescriçãoDescription NecessárioRequired PadrãoDefault
failed-check-error-messagefailed-check-error-message A mensagem de erro para retornar no corpo da resposta HTTP se o cabeçalho não existe ou tem um valor inválido.Error message to return in the HTTP response body if the header doesn't exist or has an invalid value. Esta mensagem deve conter quaisquer caracteres especiais adequadamente seguidos por caracteres de escape.This message must have any special characters properly escaped. SimYes N/DN/A
failed-check-httpcodefailed-check-httpcode O código de status HTTP para retornar se o cabeçalho não existir ou tiver um valor inválido.HTTP Status code to return if the header doesn't exist or has an invalid value. SimYes N/DN/A
header-nameheader-name O nome do cabeçalho HTTP para verificar.The name of the HTTP Header to check. SimYes N/DN/A
ignore-caseignore-case Pode ser definido como True ou False.Can be set to True or False. Se definido como True, maiúsculas e minúsculas são ignoradas quando o valor do cabeçalho é comparado com o conjunto de valores aceitáveis.If set to True case is ignored when the header value is compared against the set of acceptable values. SimYes N/DN/A

UsoUsage

Essa política pode ser usada nas seções e nos escopos da política a seguir.This policy can be used in the following policy sections and scopes.

  • Seções de política: de entrada, de saídaPolicy sections: inbound, outbound

  • Escopos da política: todos os escoposPolicy scopes: all scopes

Limitar a taxa de chamadas por assinaturaLimit call rate by subscription

A política rate-limit impede picos de uso da API para cada assinatura, limitando a taxa de chamadas para um número especificado por um período de tempo especificado.The rate-limit policy prevents API usage spikes on a per subscription basis by limiting the call rate to a specified number per a specified time period. Quando essa política é disparada, o chamador recebe um código de status de resposta 429 Too Many Requests.When this policy is triggered the caller receives a 429 Too Many Requests response status code.

Importante

Essa política pode ser usada apenas uma vez por cada documento de política.This policy can be used only once per policy document.

As expressões de política não podem ser usadas em nenhum dos atributos de política para essa política.Policy expressions cannot be used in any of the policy attributes for this policy.

Cuidado

Devido à natureza distribuída da arquitetura de limitação, a limitação de taxa nunca é completamente precisa.Due to the distributed nature of throttling architecture, rate limiting is never completely accurate. A diferença entre a configuração e o número real de solicitações permitidas varia de acordo com o volume e a taxa de solicitação, a latência de back-end e outros fatores.The difference between configured and the real number of allowed requests vary based on request volume and rate, backend latency, and other factors.

Declaração de políticaPolicy statement

<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" />
    </api>
</rate-limit>

ExemploExample

<policies>
    <inbound>
        <base />
        <rate-limit calls="20" renewal-period="90" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

ElementosElements

NomeName DescriçãoDescription NecessárioRequired
set-limitset-limit Elemento raiz.Root element. SimYes
apiapi Adicione um ou mais desses elementos para impor um limite de taxa de chamada em APIs dentro do produto.Add one or more of these elements to impose a call rate limit on APIs within the product. Limites de taxa de chamadas à API e ao produto são aplicados de forma independente.Product and API call rate limits are applied independently. A API pode ser referenciada através de name ou id.API can be referenced either via name or id. Se ambos os atributos são fornecidos, id será usado e name será ignorado.If both attributes are provided, id will be used and name will be ignored. NãoNo
operaçãooperation Adicione um ou mais desses elementos para impor um limite de taxa de chamada em operações em uma API.Add one or more of these elements to impose a call rate limit on operations within an API. Limites de taxa de chamadas à API, operação e produto são aplicados de forma independente.Product, API, and operation call rate limits are applied independently. A operação pode ser referenciada através de name ou id.Operation can be referenced either via name or id. Se ambos os atributos são fornecidos, id será usado e name será ignorado.If both attributes are provided, id will be used and name will be ignored. NãoNo

AtributosAttributes

NomeName DescriçãoDescription NecessárioRequired PadrãoDefault
namename O nome da API para a qual aplicar o limite de taxa.The name of the API for which to apply the rate limit. SimYes N/DN/A
chamadascalls O número total máximo de chamadas permitidas durante o intervalo de tempo especificado no renewal-period.The maximum total number of calls allowed during the time interval specified in the renewal-period. SimYes N/DN/A
renewal-periodrenewal-period O período de tempo, em segundos, durante o qual uma cota reinicia.The time period in seconds after which the quota resets. SimYes N/DN/A

UsoUsage

Essa política pode ser usada nas seções e nos escopos da política a seguir.This policy can be used in the following policy sections and scopes.

  • Seções de política: de entradaPolicy sections: inbound

  • Escopos de política: produto, API, operaçãoPolicy scopes: product, api, operation

Limitar a taxa de chamadas por chaveLimit call rate by key

Importante

Esse recurso não está disponível na camada Consumo do Gerenciamento de API.This feature is unavailable in the Consumption tier of API Management.

A política rate-limit-by-key impede picos de uso da API para cada chave, limitando a taxa de chamadas para um número especificado por um período de tempo especificado.The rate-limit-by-key policy prevents API usage spikes on a per key basis by limiting the call rate to a specified number per a specified time period. A chave pode ter um valor de cadeia de caracteres arbitrária e geralmente é fornecida usando uma expressão de política.The key can have an arbitrary string value and is typically provided using a policy expression. A condição de incremento opcional pode ser adicionada para especificar quais solicitações devem ser contadas para obtenção do limite.Optional increment condition can be added to specify which requests should be counted towards the limit. Quando essa política é disparada, o chamador recebe um código de status de resposta 429 Too Many Requests.When this policy is triggered the caller receives a 429 Too Many Requests response status code.

Para obter mais informações e exemplos dessa política, consulte Limitação de solicitação avançada com o Gerenciamento de API do Azure.For more information and examples of this policy, see Advanced request throttling with Azure API Management.

Cuidado

Devido à natureza distribuída da arquitetura de limitação, a limitação de taxa nunca é completamente precisa.Due to the distributed nature of throttling architecture, rate limiting is never completely accurate. A diferença entre a configuração e o número real de solicitações permitidas varia de acordo com o volume e a taxa de solicitação, a latência de back-end e outros fatores.The difference between configured and the real number of allowed requests vary based on request volume and rate, backend latency, and other factors.

Declaração de políticaPolicy statement

<rate-limit-by-key calls="number"
                   renewal-period="seconds"
                   increment-condition="condition"
                   counter-key="key value" />

ExemploExample

No exemplo a seguir, o limite de taxa é codificado pelo endereço IP do chamador.In the following example, the rate limit is keyed by the caller IP address.

<policies>
    <inbound>
        <base />
        <rate-limit-by-key  calls="10"
              renewal-period="60"
              increment-condition="@(context.Response.StatusCode == 200)"
              counter-key="@(context.Request.IpAddress)"/>
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

ElementosElements

NomeName DescriçãoDescription NecessárioRequired
set-limitset-limit Elemento raiz.Root element. SimYes

AtributosAttributes

NomeName DescriçãoDescription NecessárioRequired PadrãoDefault
chamadascalls O número total máximo de chamadas permitidas durante o intervalo de tempo especificado no renewal-period.The maximum total number of calls allowed during the time interval specified in the renewal-period. SimYes N/DN/A
counter-keycounter-key A chave a ser usada para a política de limite de taxa.The key to use for the rate limit policy. SimYes N/DN/A
increment-conditionincrement-condition A expressão booliana que especifica se a solicitação deve ser contabilizada para a cota (true).The boolean expression specifying if the request should be counted towards the quota (true). NãoNo N/DN/A
renewal-periodrenewal-period O período de tempo, em segundos, durante o qual uma cota reinicia.The time period in seconds after which the quota resets. SimYes N/DN/A

UsoUsage

Essa política pode ser usada nas seções e nos escopos da política a seguir.This policy can be used in the following policy sections and scopes.

  • Seções de política: de entradaPolicy sections: inbound

  • Escopos da política: todos os escoposPolicy scopes: all scopes

Restringir IPs do chamadorRestrict caller IPs

A política ip-filter filtra (permite/recusa) chamadas de endereços IP específicos e/ou intervalos de endereços.The ip-filter policy filters (allows/denies) calls from specific IP addresses and/or address ranges.

Declaração de políticaPolicy statement

<ip-filter action="allow | forbid">
    <address>address</address>
    <address-range from="address" to="address" />
</ip-filter>

ExemploExample

No exemplo a seguir, a política só permite solicitações provenientes do endereço IP único ou do intervalo de endereços IP especificadosIn the following example, the policy only allows requests coming either from the single IP address or range of IP addresses specified

<ip-filter action="allow">
    <address>13.66.201.169</address>
    <address-range from="13.66.140.128" to="13.66.140.143" />
</ip-filter>

ElementosElements

NomeName DescriçãoDescription NecessárioRequired
ip-filterip-filter Elemento raiz.Root element. SimYes
endereçoaddress Especifica um único endereço IP no qual filtrar.Specifies a single IP address on which to filter. Pelo menos um elemento address ou address-range é necessário.At least one address or address-range element is required.
address-range from="address" to="address"address-range from="address" to="address" Especifica um intervalo de endereços IP nos quais filtrar.Specifies a range of IP address on which to filter. Pelo menos um elemento address ou address-range é necessário.At least one address or address-range element is required.

AtributosAttributes

NomeName DescriçãoDescription NecessárioRequired PadrãoDefault
address-range from="address" to="address"address-range from="address" to="address" Um intervalo de endereços IP aos quais o acesso será permitido ou negado.A range of IP addresses to allow or deny access for. Necessário quando o elemento address-range é usado.Required when the address-range element is used. N/DN/A
ip-filter action="allow | forbid"ip-filter action="allow | forbid" Especifica se chamadas para os endereços IP e intervalos de endereços IP especificados devem ou não ser permitidas.Specifies whether calls should be allowed or not for the specified IP addresses and ranges. SimYes N/DN/A

UsoUsage

Essa política pode ser usada nas seções e nos escopos da política a seguir.This policy can be used in the following policy sections and scopes.

  • Seções de política: de entradaPolicy sections: inbound
  • Escopos da política: todos os escoposPolicy scopes: all scopes

Definir a cota de uso por assinaturaSet usage quota by subscription

A política quota impõe uma cota renovável ou de tempo de vida de volume de chamadas e/ou largura de banda, para cada assinatura.The quota policy enforces a renewable or lifetime call volume and/or bandwidth quota, on a per subscription basis.

Importante

Essa política pode ser usada apenas uma vez por cada documento de política.This policy can be used only once per policy document.

As expressões de política não podem ser usadas em nenhum dos atributos de política para essa política.Policy expressions cannot be used in any of the policy attributes for this policy.

Declaração de políticaPolicy statement

<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>

ExemploExample

<policies>
    <inbound>
        <base />
        <quota calls="10000" bandwidth="40000" renewal-period="3600" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

ElementosElements

NomeName DescriçãoDescription NecessárioRequired
quotaquota Elemento raiz.Root element. SimYes
apiapi Adicione um ou mais desses elementos para impor a cota de chamada em APIs dentro do produto.Add one or more of these elements to impose call quota on APIs within the product. Cotas de API e produto são aplicadas de forma independente.Product and API call quotas are applied independently. A API pode ser referenciada através de name ou id.API can be referenced either via name or id. Se ambos os atributos são fornecidos, id será usado e name será ignorado.If both attributes are provided, id will be used and name will be ignored. NãoNo
operaçãooperation Adicione um ou mais desses elementos para impor a cota de chamada em operações em uma API.Add one or more of these elements to impose call quota on operations within an API. Cotas de operações, APIs e produtos são aplicadas de forma independente.Product, API, and operation call quotas are applied independently. A operação pode ser referenciada através de name ou id.Operation can be referenced either via name or id. Se ambos os atributos são fornecidos, id será usado e name será ignorado.If both attributes are provided, id will be used and name will be ignored. NãoNo

AtributosAttributes

NomeName DescriçãoDescription NecessárioRequired PadrãoDefault
namename O nome da API ou operação à qual a cota se aplica.The name of the API or operation for which the quota applies. SimYes N/DN/A
largura de bandabandwidth O número total máximo de kilobytes permitidos durante o intervalo de tempo especificado no renewal-period.The maximum total number of kilobytes allowed during the time interval specified in the renewal-period. calls ou bandwidth ou ainda ambos juntos devem ser especificados.Either calls, bandwidth, or both together must be specified. N/DN/A
chamadascalls O número total máximo de chamadas permitidas durante o intervalo de tempo especificado no renewal-period.The maximum total number of calls allowed during the time interval specified in the renewal-period. calls ou bandwidth ou ainda ambos juntos devem ser especificados.Either calls, bandwidth, or both together must be specified. N/DN/A
renewal-periodrenewal-period O período de tempo, em segundos, durante o qual uma cota reinicia.The time period in seconds after which the quota resets. SimYes N/DN/A

UsoUsage

Essa política pode ser usada nas seções e nos escopos da política a seguir.This policy can be used in the following policy sections and scopes.

  • Seções de política: de entradaPolicy sections: inbound
  • Escopos de política: produtoPolicy scopes: product

Definir uma cota de uso por chaveSet usage quota by key

Importante

Esse recurso não está disponível na camada Consumo do Gerenciamento de API.This feature is unavailable in the Consumption tier of API Management.

A política quota-by-key impõe uma cota renovável ou de tempo de vida de volume de chamadas e/ou largura de banda, para cada chave.The quota-by-key policy enforces a renewable or lifetime call volume and/or bandwidth quota, on a per key basis. A chave pode ter um valor de cadeia de caracteres arbitrária e geralmente é fornecida usando uma expressão de política.The key can have an arbitrary string value and is typically provided using a policy expression. A condição de incremento opcional pode ser adicionada para especificar quais solicitações devem ser contadas para obtenção da cota.Optional increment condition can be added to specify which requests should be counted towards the quota. Se várias políticas incrementassem o mesmo valor de chave, ele seria incrementado apenas uma vez por solicitação.If multiple policies would increment the same key value, it is incremented only once per request. Quando essa política é disparada, o chamador recebe um código de status de resposta 403 Forbidden.When the call limit is reached, the caller receives a 403 Forbidden response status code.

Para obter mais informações e exemplos dessa política, consulte Limitação de solicitação avançada com o Gerenciamento de API do Azure.For more information and examples of this policy, see Advanced request throttling with Azure API Management.

Declaração de políticaPolicy statement

<quota-by-key calls="number"
              bandwidth="kilobytes"
              renewal-period="seconds"
              increment-condition="condition"
              counter-key="key value" />

ExemploExample

No exemplo a seguir, a cota é codificada pelo endereço IP do chamador.In the following example, the quota is keyed by the caller IP address.

<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>

ElementosElements

NomeName DescriçãoDescription NecessárioRequired
quotaquota Elemento raiz.Root element. SimYes

AtributosAttributes

NomeName DescriçãoDescription NecessárioRequired PadrãoDefault
largura de bandabandwidth O número total máximo de kilobytes permitidos durante o intervalo de tempo especificado no renewal-period.The maximum total number of kilobytes allowed during the time interval specified in the renewal-period. calls ou bandwidth ou ainda ambos juntos devem ser especificados.Either calls, bandwidth, or both together must be specified. N/DN/A
chamadascalls O número total máximo de chamadas permitidas durante o intervalo de tempo especificado no renewal-period.The maximum total number of calls allowed during the time interval specified in the renewal-period. calls ou bandwidth ou ainda ambos juntos devem ser especificados.Either calls, bandwidth, or both together must be specified. N/DN/A
counter-keycounter-key A chave a ser usada para a política de cota.The key to use for the quota policy. SimYes N/DN/A
increment-conditionincrement-condition A expressão booliana que especifica se a solicitação deve ser contabilizada para a cota (true)The boolean expression specifying if the request should be counted towards the quota (true) NãoNo N/DN/A
renewal-periodrenewal-period O período de tempo, em segundos, durante o qual uma cota reinicia.The time period in seconds after which the quota resets. SimYes N/DN/A

UsoUsage

Essa política pode ser usada nas seções e nos escopos da política a seguir.This policy can be used in the following policy sections and scopes.

  • Seções de política: de entradaPolicy sections: inbound
  • Escopos da política: todos os escoposPolicy scopes: all scopes

Validar JWTValidate JWT

A política validate-jwt impõe a existência e a validade de um JWT extraído de um Cabeçalho HTTP ou um parâmetro de consulta especificado.The validate-jwt policy enforces existence and validity of a JWT extracted from either a specified HTTP Header or a specified query parameter.

Importante

A política validate-jwt requer que a declaração registrada exp seja incluída no token JWT, a menos que o atributo require-expiration-time seja especificado e definido como false.The validate-jwt policy requires that the exp registered claim is included in the JWT token, unless require-expiration-time attribute is specified and set to false. A política validate-jwt dá suporte aos algoritmos de assinatura HS256 e RS256.The validate-jwt policy supports HS256 and RS256 signing algorithms. Para HS256, a chave deve ser fornecida embutida na política no formato codificado em base64.For HS256 the key must be provided inline within the policy in the base64 encoded form. Para RS256, a chave deve ser fornecida por meio de um ponto de extremidade de configuração de Open ID.For RS256 the key has to be provide via an Open ID configuration endpoint. A política validate-jwt dá suporte a tokens criptografados com chaves simétricas usando os seguintes algoritmos de criptografia: A128CBC-HS256, A192CBC-HS384, A256CBC-HS512.The validate-jwt policy supports tokens encrypted with symmetric keys using the following encryption algorithms A128CBC-HS256, A192CBC-HS384, A256CBC-HS512.

Declaração de políticaPolicy statement

<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">
  <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>
  <openid-config url="full URL of the configuration endpoint, e.g. https://login.constoso.com/openid-configuration" />
  <zumo-master-key id="key identifier">key value</zumo-master-key>
</validate-jwt>

ExemplosExamples

Validação de token simplesSimple token validation

<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>

Validação de token do Azure Active DirectoryAzure Active Directory token validation

<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>

Validação de token do Azure Active Directory B2CAzure Active Directory B2C token validation

<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>

Autorizar o acesso para operações baseadas em declarações de tokenAuthorize access to operations based on token claims

Este exemplo mostra como usar a política validar JWT para autorizar o acesso a operações com base no valor de declarações de token.This example shows how to use the Validate JWT policy to authorize access to operations based on token claims value.

<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>

Validação de token de Serviços Móveis do AzureAzure Mobile Services token validation

<validate-jwt header-name="x-zumo-auth" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Supplied access token is invalid.">
    <issuers>
        <issuer>urn:microsoft:windows-azure:zumo</issuer>
    </issuers>
    <audiences>
        <audience>Facebook</audience>
    </audiences>
    <issuer-signing-keys>
        <zumo-master-key id="0">insert key here</zumo-master-key>
    </issuer-signing-keys>
</validate-jwt>

ElementosElements

ElementoElement DescriçãoDescription NecessárioRequired
validate-jwtvalidate-jwt Elemento raiz.Root element. SimYes
públicos-alvoaudiences Contém uma lista de declarações de público-alvo aceitáveis que podem estar presentes no token.Contains a list of acceptable audience claims that can be present on the token. Se vários valores de público-alvo estiverem presentes, cada valor será tentado até que todos sejam esgotados (nesse caso, a validação falhará) ou até obter êxito.If multiple audience values are present, then each value is tried until either all are exhausted (in which case validation fails) or until one succeeds. Pelo menos um público-alvo deve ser especificado.At least one audience must be specified. NãoNo
issuer-signing-keysissuer-signing-keys Uma lista de chaves de segurança codificadas em Base64 usadas para validar tokens assinados.A list of Base64-encoded security keys used to validate signed tokens. Se várias chaves de segurança estiverem presentes, cada chave será tentada até que todas sejam esgotadas (nesse caso, a validação falhará) ou até obter êxito (útil para substituição de token).If multiple security keys are present, then each key is tried until either all are exhausted (in which case validation fails) or until one succeeds (useful for token rollover). Elementos-chave têm um atributo id opcional usado para correspondência com a declaração kid.Key elements have an optional id attribute used to match against kid claim. NãoNo
decryption-keysdecryption-keys Uma lista de chaves codificadas em Base64 para descriptografar os tokens.A list of Base64-encoded keys used to decrypt the tokens. Se várias chaves de segurança estiverem presentes, cada chave será tentada até que todas elas sejam esgotadas (nesse caso, a validação falhará) ou até uma chave obter êxito.If multiple security keys are present, then each key is tried until either all keys are exhausted (in which case validation fails) or until a key succeeds. Elementos-chave têm um atributo id opcional usado para correspondência com a declaração kid.Key elements have an optional id attribute used to match against kid claim. NãoNo
emissoresissuers Uma lista de entidades aceitáveis que emitiram o token.A list of acceptable principals that issued the token. Se vários valores de emissor estiverem presentes, cada valor será tentado até que todos sejam esgotados (nesse caso, a validação falhará) ou até obter êxito.If multiple issuer values are present, then each value is tried until either all are exhausted (in which case validation fails) or until one succeeds. NãoNo
openid-configopenid-config O elemento usado para especificar um ponto de extremidade de configuração de Open ID em conformidade do qual chaves de assinatura e emissor podem ser obtidos.The element used for specifying a compliant Open ID configuration endpoint from which signing keys and issuer can be obtained. NãoNo
required-claimsrequired-claims Contém uma lista de declarações cuja presença é esperada no token para que ele possa ser considerado válido.Contains a list of claims expected to be present on the token for it to be considered valid. Quando o atributo match é definido como all, cada valor de declaração na política deve estar presente no token para que a validação seja bem-sucedida.When the match attribute is set to all every claim value in the policy must be present in the token for validation to succeed. Quando o atributo match é definido como any, pelo menos uma declaração deve estar presente no token para que a validação seja bem-sucedida.When the match attribute is set to any at least one claim must be present in the token for validation to succeed. NãoNo
zumo-master-keyzumo-master-key Chave mestra para tokens emitidos pelos Serviços Móveis do AzureMaster key for tokens issued by Azure Mobile Services NãoNo

AtributosAttributes

NomeName DescriçãoDescription NecessárioRequired PadrãoDefault
clock-skewclock-skew Período de tempo.Timespan. Use para especificar a diferença de tempo máxima esperada entre os relógios do sistema do emissor do token e a instância do Gerenciamento de API.Use to specify maximum expected time difference between the system clocks of the token issuer and the API Management instance. NãoNo 0 segundos0 seconds
failed-validation-error-messagefailed-validation-error-message Mensagem de erro para retornar no corpo da resposta HTTP se o JWT não passar na validação.Error message to return in the HTTP response body if the JWT does not pass validation. Esta mensagem deve conter quaisquer caracteres especiais adequadamente seguidos por caracteres de escape.This message must have any special characters properly escaped. NãoNo A mensagem de erro padrão depende do problema de validação, por exemplo, "O JWT não está presente."Default error message depends on validation issue, for example "JWT not present."
failed-validation-httpcodefailed-validation-httpcode O código de status HTTP para retornar se o JWT não passar na validação.HTTP Status code to return if the JWT doesn't pass validation. NãoNo 401401
header-nameheader-name O nome do cabeçalho HTTP contendo o token.The name of the HTTP header holding the token. header-name Umoutoken-valuedeveserespecificado. query-parameter-nameOne of header-name, query-parameter-name or token-value must be specified. N/DN/A
nome do parâmetro de consultaquery-parameter-name O nome do parâmetro de consulta que contém o token.The name of the query parameter holding the token. header-name Umoutoken-valuedeveserespecificado. query-parameter-nameOne of header-name, query-parameter-name or token-value must be specified. N/DN/A
valor do tokentoken-value Expressão que retorna uma cadeia de caracteres que contém o token JWTExpression returning a string containing JWT token header-name Umoutoken-valuedeveserespecificado. query-parameter-nameOne of header-name, query-parameter-name or token-value must be specified. N/DN/A
idid O atributo id no elemento key permite que você especifique a cadeia de caracteres cuja correspondência será verificada em relação à declaração kid no token (se presente) para descobrir a chave apropriada a ser usada para validação de assinatura.The id attribute on the key element allows you to specify the string that will be matched against kid claim in the token (if present) to find out the appropriate key to use for signature validation. NãoNo N/DN/A
matchmatch O atributo match no elemento claim especifica se todos os valores de declaração na política devem estar presentes no token para que a validação seja bem-sucedida.The match attribute on the claim element specifies whether every claim value in the policy must be present in the token for validation to succeed. Os valores possíveis são:Possible values are:

- all – todos os valores de declaração na política devem estar presentes no token para que a validação seja bem-sucedida.- all - every claim value in the policy must be present in the token for validation to succeed.

- any – pelo menos um valor de declaração na política deve estar presente no token para que a validação seja bem-sucedida.- any - at least one claim value must be present in the token for validation to succeed.
NãoNo tudoall
require-expiration-timerequire-expiration-time Booliano.Boolean. Especifica se uma declaração de expiração é necessária no token.Specifies whether an expiration claim is required in the token. NãoNo truetrue
require-schemerequire-scheme O nome do esquema do token, por exemplo, "Portador".The name of the token scheme, e.g. "Bearer". Quando esse atributo for definido, a política garantirá que o esquema especificado esteja presente no valor do cabeçalho de Autorização.When this attribute is set, the policy will ensure that specified scheme is present in the Authorization header value. NãoNo N/DN/A
require-signed-tokensrequire-signed-tokens Booliano.Boolean. Especifica se é necessário que um determinado token seja assinado.Specifies whether a token is required to be signed. NãoNo truetrue
separadorseparator Cadeia de caracteres.String. Especifica um separador (por exemplo, ",") a ser usado para extrair um conjunto de valores de uma declaração com valores múltiplos.Specifies a separator (e.g. ",") to be used for extracting a set of values from a multi-valued claim. NãoNo N/DN/A
urlurl URL ponto de extremidade de configuração de Open ID da qual é possível obter os metadados de configuração de Open ID.Open ID configuration endpoint URL from where Open ID configuration metadata can be obtained. A resposta deve ser de acordo com as especificações definidas na URL:https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata.The response should be according to specs as defined at URL:https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata. Para o Azure Active Directory, use a seguinte URL: https://login.microsoftonline.com/{tenant-name}/.well-known/openid-configuration substituindo o seu nome de locatário do diretório, por exemplo, contoso.onmicrosoft.com.For Azure Active Directory use the following URL: https://login.microsoftonline.com/{tenant-name}/.well-known/openid-configuration substituting your directory tenant name, e.g. contoso.onmicrosoft.com. SimYes N/DN/A
saída-token-variável-nomeoutput-token-variable-name Cadeia de caracteres.String. Nome da variável de contexto que receberá o valor de token como um Jwt objeto do tipo após a validação de token bem-sucedidaName of context variable that will receive token value as an object of type Jwt upon successful token validation NãoNo N/DN/A

UsoUsage

Essa política pode ser usada nas seções e nos escopos da política a seguir.This policy can be used in the following policy sections and scopes.

  • Seções de política: de entradaPolicy sections: inbound
  • Escopos da política: todos os escoposPolicy scopes: all scopes

Próximas etapasNext steps

Para obter mais informações sobre como trabalhar com políticas, consulte:For more information working with policies, see: