Validar token do Microsoft Entra

APLICA-SE A: todas as camadas do Gerenciamento de API

A política de validate-azure-ad-token impõe a existência e a validade de um JWT (token Web JSON) fornecido pelo serviço Microsoft Entra (anteriormente chamado de Azure Active Directory) para um conjunto especificado de entidades de segurança no diretório. O JWT pode ser extraído de um cabeçalho HTTP, parâmetro de consulta ou valor fornecido usando uma expressão de política ou variável de contexto.

Observação

Para validar um JWT fornecido por outro provedor de identidade, o Gerenciamento de API também fornece a política validate-jwt.

Observação

Defina os elementos da política e os elementos filho na ordem fornecida na declaração da política. Saiba mais sobre como definir e editar as políticas de Gerenciamento de API.

Declaração de política

<validate-azure-ad-token
    tenant-id="tenant ID or URL (for example, "contoso.onmicrosoft.com") of the Azure Active Directory service"
    header-name="name of HTTP header containing the token (alternatively, use query-parameter-name or token-value attribute to specify token)"
    query-parameter-name="name of query parameter used to pass the token (alternative, use header-name or token-value attribute to specify token)"
    token-value="expression returning the token as a string (alternatively, use header-name or query-parameter attribute to specify token)"
    failed-validation-httpcode="HTTP status code to return on failure"
    failed-validation-error-message="error message to return on failure"
    output-token-variable-name="name of a variable to receive a JWT object representing successfully validated token">
    <client-application-ids>
        <application-id>Client application ID from Azure Active Directory</application-id>
        <!-- If there are multiple client application IDs, then add additional application-id elements -->
    </client-application-ids>
    <backend-application-ids>
        <application-id>Backend application ID from Azure Active Directory</application-id>
        <!-- If there are multiple backend application IDs, then add additional application-id elements -->
    </backend-application-ids>
    <audiences>
        <audience>audience string</audience>
        <!-- if there are multiple possible audiences, then add additional audience elements -->
    </audiences>
    <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 value, then add additional value elements -->
        </claim>
        <!-- if there are multiple possible allowed values, then add additional value elements -->
    </required-claims>
</validate-azure-ad-token>

Atributos

Atributo Descrição Obrigatório Padrão
tenant-id ID do locatário ou URL do serviço Microsoft Entra. Expressões de política são permitidas. Sim N/D
header-name O nome do cabeçalho HTTP contendo o token. Expressões de política são permitidas. É necessário especificar header-name, query-parameter-name ou token-value. Authorization
nome do parâmetro de consulta O nome do parâmetro de consulta que contém o token. Expressões de política são permitidas. É necessário especificar header-name, query-parameter-name ou token-value. N/D
token-value Expressão que retorna uma cadeia de caracteres que contém o token. Você não deve retornar Bearer como parte do valor do token. Expressões de política são permitidas. É necessário especificar header-name, query-parameter-name ou token-value. N/D
failed-validation-httpcode O código de status HTTP para retornar se o JWT não passar na validação. Expressões de política são permitidas. Não 401
failed-validation-error-message Mensagem de erro para retornar no corpo da resposta HTTP se o JWT não passar na validação. Esta mensagem deve conter quaisquer caracteres especiais adequadamente seguidos por caracteres de escape. Expressões de política são permitidas. Não A mensagem de erro padrão depende do problema de validação, por exemplo, "O JWT não está presente."
output-token-variable-name Cadeia de caracteres. Nome da variável de contexto que receberá o valor de token como um objeto do tipo Jwt após a validação de token bem-sucedida. Expressões de política não são permitidas. Não N/D

Elementos

Elemento Descrição Obrigatório
públicos-alvo Contém uma lista de declarações de público-alvo aceitáveis que podem estar presentes no token. Se vários valores audience estiverem presentes, cada valor será tentado até que todos estejam esgotados (nesse caso, a validação falhará) ou até que um seja bem-sucedido. Expressões de política são permitidas. No
backend-application-ids Contém uma lista de IDs de aplicativo de back-end aceitáveis. Isso só é necessário em casos avançados para a configuração de opções e geralmente pode ser removido. Expressões de política não são permitidas. Não
client-application-ids Contém uma lista de IDs de aplicativo cliente aceitáveis. Se vários elementos application-id estiverem presentes, cada valor será tentado até que todos estejam esgotados (nesse caso, a validação falhará) ou até que um seja bem-sucedido. Se uma ID de aplicativo cliente não for fornecida, uma ou mais declarações audience deverão ser especificadas. Expressões de política não são permitidas. Não
required-claims Contém uma lista de elementos claim para valores de declaração que devem estar presentes no token para que seja considerado válido. 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. 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. Expressões de política são permitidas. Não

atributos de declaração

Atributo Descrição Obrigatório Padrão
name Nome da declaração, como espera-se que apareça no token. Expressões de política são permitidas. Sim N/D
match 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. Os valores possíveis são:

- all – todos os valores de declaração na política devem estar presentes no token para que a validação seja bem-sucedida.

- any – pelo menos um valor de declaração na política deve estar presente no token para que a validação seja bem-sucedida.

Expressões de política são permitidas.
Não all
separator Cadeia de caracteres. Especifica um separador (por exemplo, ",") a ser usado para extrair um conjunto de valores de uma declaração com valores múltiplos. Expressões de política são permitidas. No N/D

Uso

Observações de uso

  • Você pode usar políticas de restrição de acesso em escopos diferentes para finalidades distintas. Por exemplo, você pode proteger toda a API com a autenticação do Microsoft Entra aplicando a política validate-azure-ad-token no nível da API ou pode aplicá-la no nível de operação da API e usar claims para um controle mais granular.
  • Não há suporte para a ID do Microsoft Entra para clientes (versão prévia).

Exemplos

Validação de token simples

A política a seguir é a forma mínima da política validate-azure-ad-token. Ele espera que o JWT seja fornecido no cabeçalho Authorization padrão usando o esquema Bearer. Neste exemplo, a ID do locatário do Microsoft Entra e a ID do aplicativo cliente são fornecidas usando valores nomeados.

<validate-azure-ad-token tenant-id="{{aad-tenant-id}}">
    <client-application-ids>
        <application-id>{{aad-client-application-id}}</application-id>
    </client-application-ids>
</validate-azure-ad-token>

Validar se o público-alvo e a declaração estão corretos

A política a seguir verifica se o público-alvo é o nome do host da instância de Gerenciamento de API e se a declaração ctry é US. O nome do host é fornecido usando uma expressão de política e a ID do locatário do Microsoft Entra e a ID do aplicativo cliente são fornecidas usando valores nomeados. O JWT decodificado é fornecido na variável jwt após a validação.

Para obter mais detalhes sobre declarações opcionais, leia Fornecer declarações opcionais ao seu aplicativo.

<validate-azure-ad-token tenant-id="{{aad-tenant-id}}" output-token-variable-name="jwt">
    <client-application-ids>
        <application-id>{{aad-client-application-id}}</application-id>
    </client-application-ids>
    <audiences>
        <audience>@(context.Request.OriginalUrl.Host)</audience>
    </audiences>
    <required-claims>
        <claim name="ctry" match="any">
            <value>US</value>
        </claim>
    </required-claims>
</validate-azure-ad-token>

Para obter mais informações sobre como trabalhar com políticas, consulte: