A configuração do seletor de autenticação dinâmica é inválida ou uma implantação multiautomática falha posteriormente ao corresponder as solicitações a um servidor de autenticação

Descubra como diagnosticar e solucionar problemas de erros do seletor de autenticação dinâmica e falhas de correspondência de solicitações em configurações de multiautilização ao criar implantações de API com o serviço API Gateway.

Se uma implantação de API usar vários servidores de autenticação e selecionar entre eles dinamicamente, as falhas poderão ocorrer no momento da implantação ou no runtime. No momento da implantação, o Gateway de API pode rejeitar uma configuração de seletor inválida. No runtime, o Gateway de API pode aceitar a implantação, mas não consegue corresponder uma solicitação a um servidor de autenticação.

Quando Isso Acontece

Você pode ver um ou ambos os seguintes sintomas:

  • O Gateway de API rejeita a implantação com um erro Invalid Dynamic Authentication Selector.

  • A implantação foi criada com sucesso, mas algumas solicitações posteriormente retornam 401 Unauthorized porque nenhum servidor de autenticação corresponde à solicitação.

O problema geralmente ocorre em implantações que usam diferentes métodos de autenticação para diferentes padrões de solicitação, como autenticação de chave de API para um padrão de rota e autenticação OAuth2 para outro padrão de rota.

Como funciona a autenticação dinâmica

Uma implantação de autenticação dinâmica usa o valor selectionSource.selector para decidir qual servidor de autenticação trata cada solicitação. Para cada solicitação, o Gateway de API resolve o valor do seletor da solicitação e compara esse valor com as chaves de servidor de autenticação configuradas.

Use um dos seguintes formulários de seletor suportados:

  • request.auth[<key>]

  • request.path[<key>]

  • request.query[<key>]

  • request.headers[<key>]

  • request.subdomain[<key>]

  • request.host

Depois que o Gateway de API resolve o valor do seletor, ele seleciona o servidor de autenticação correspondente. Se nenhuma chave do servidor de autenticação corresponder, o Gateway de API usará o servidor de autenticação padrão se um estiver configurado. Caso contrário, a solicitação falhará com 401 Unauthorized.

Parte 1: Falha na Criação da Implantação porque o Seletor é Inválido

Esta falha ocorre quando a expressão do seletor é inválida e a implantação não pode ser criada.

O que isto parece

A implantação foi rejeitada com o seguinte erro:

  • Invalid Dynamic Authentication Selector

Por que isso acontece

A expressão do seletor deve usar um formulário de seletor suportado e uma sintaxe de seletor válida. Os seguintes exemplos de seletor são inválidos:

  • random

  • request.header[]]

  • request.path[path1]*request.path[path2]

Esses erros de configuração devem ser corrigidos para que a implantação possa ser criada ou atualizada.

Requisito do Seletor de Caminho

Se você usar request.path[<key>], o valor <key> deverá ser o nome de um parâmetro de caminho definido na rota.

A rota e o seletor a seguir usam o mesmo nome de parâmetro de caminho:

  • Rota: /DMPServices/{serviceType}

  • Seletor: request.path[serviceType]

O seletor request.path[/] não é válido porque / não é um nome de parâmetro de caminho.

Como corrigi-lo

Use as seguintes verificações para corrigir a sintaxe de seletor inválida:

  • Substitua o seletor inválido por um dos formulários de seletor suportados.

  • Se você usar request.path[<key>], defina o mesmo parâmetro de caminho nomeado na rota.

  • Se o padrão de solicitação não for baseado em um parâmetro de caminho estável, use um seletor de cabeçalho ou de parâmetro de consulta.

Parte 2: Implantação Bem-sucedida, mas Solicitações Posteriores Falham sem Servidor de Autenticação Correspondente

Essa falha ocorre no runtime. A configuração de implantação é válida, mas uma solicitação de entrada não produz um valor de seletor que corresponda a qualquer servidor de autenticação configurado.

O que isto parece

No runtime, as solicitações falham com a seguinte mensagem:

  • Request unauthorized as no authentication server matched the request and no default is specified

A mensagem significa que o Gateway de API atingiu a implantação, mas não pôde selecionar um servidor de autenticação para a solicitação.

Por que isso acontece

A falha geralmente ocorre porque o valor do seletor está presente na primeira solicitação, mas está ausente em solicitações posteriores. Por exemplo, a solicitação inicial pode incluir um parâmetro de consulta que seleciona o servidor de autenticação, enquanto as solicitações posteriores para arquivos .js, arquivos .css, imagens ou chamadas de API omitem esse parâmetro de consulta.

Se nenhum servidor de autenticação padrão for configurado, uma solicitação que não inclua um valor de seletor correspondente falhará com 401 Unauthorized.

Como os cookies e o estado do OAuth2 se encaixam

Os cookies e o parâmetro state do OAuth2 podem ajudar a preservar informações de sessão ou fluxo, mas não substituem o requisito do seletor de runtime para solicitações de acompanhamento comuns.

Problemas do Seletor de Parâmetros de Consulta

Um seletor de parâmetro de consulta pode falhar quando a solicitação inicial inclui o valor do seletor, mas as solicitações posteriores o omitem. Por exemplo, solicitações do browser para ativos como arquivos .js, arquivos .css e imagens geralmente não incluem os mesmos parâmetros de consulta da solicitação inicial.

Durante a etapa de redirecionamento ou callback do OAuth2, o Serviço API Gateway pode usar o parâmetro state do OAuth2 para recuperar o servidor de autenticação usado para esse fluxo. Após o callback, as solicitações de acompanhamento comuns ainda devem corresponder ao comportamento de seleção de autenticação de implantação.

Como Escolher um Seletor Melhor

Use um valor de seletor presente em cada solicitação que deve ser autenticada de forma consistente. Os seguintes tipos de seletor geralmente são mais confiáveis do que um seletor de parâmetro de consulta:

  • Um cabeçalho de solicitação, usando request.headers[<key>].

  • Um parâmetro de caminho estável, usando request.path[<key>].

  • O nome do host, usando request.host, se a seleção de autenticação baseada em host for necessária.

Para aplicativos baseados em navegador, um cabeçalho de solicitação geralmente é mais confiável do que um parâmetro de consulta porque as solicitações de acompanhamento podem incluir o mesmo cabeçalho consistentemente.

Como Corrigir Falhas de Correspondência de Runtime

Use as seguintes verificações para corrigir falhas de correspondência do servidor de autenticação de runtime:

  • Se o seletor usar um parâmetro de consulta que não esteja presente em solicitações posteriores, altere o seletor para um valor de solicitação estável, como um parâmetro de cabeçalho ou caminho.

  • Se for esperado que algumas solicitações omitam o valor do seletor, configure um servidor de autenticação padrão apropriado.

  • Se o seletor usar um parâmetro de caminho, confirme se as solicitações posteriores incluem o mesmo parâmetro de caminho.

  • Se o seu aplicativo usa cookies, use-os apenas para a continuidade da sessão. Não confie apenas em cookies para selecionar o servidor de autenticação para solicitações de acompanhamento comuns.

O que verificar

Para uma implantação que já está ativa, compare a solicitação que foi bem-sucedida com a solicitação que falhou. Confirme os seguintes detalhes:

  • O seletor configurado em selectionSource.

  • O valor do seletor resolvido a partir da solicitação bem-sucedida.

  • O valor do seletor que é resolvido a partir da solicitação com falha.

  • Se o valor do seletor está presente em ambas as solicitações.

  • Se uma chave do servidor de autenticação corresponde a cada valor do seletor resolvido.

  • Se um servidor de autenticação padrão está configurado.

O que Procurar nos Logs

Use logs de execução para identificar o modo de falha:

  • Invalid Dynamic Authentication Selector indica um problema de configuração de implantação.

  • Request unauthorized as no authentication server matched the request and no default is specified indica um problema de correspondência de solicitação de runtime.

Solucione problemas desses modos de falha separadamente. Uma configuração de implantação válida ainda poderá falhar no runtime se solicitações posteriores não incluírem um valor de seletor correspondente.

Verificar a Correção

Depois de corrigir o mapeamento do seletor ou do servidor de autenticação, verifique o fluxo de implantação e solicitação:

  • Recrie ou atualize a implantação se a configuração do seletor tiver sido alterada.

  • Envie a solicitação inicial novamente.

  • Envie as solicitações de acompanhamento que falharam anteriormente.

  • Confirme se o Gateway de API não rejeita mais a implantação para sintaxe do seletor.

  • Confirme se as solicitações de runtime não falharam mais porque nenhum servidor de autenticação correspondeu à solicitação.

Para obter mais informações

Para obter mais informações, consulte: