Compartilhar via


Solução de problemas do AD FS – Sintaxe de regras de declarações

Uma declaração é uma instrução que uma entidade faz sobre si mesma ou sobre outra entidade. As declarações são emitidas por uma terceira parte confiável e recebem um ou mais valores e, em seguida, são empacotadas em tokens de segurança emitidos pelo servidor do AD FS. Este artigo trata da sintaxe e da criação de declarações. Para obter mais informações sobre a emissão de declarações, consulte Solução de problemas do AD FS – Emissão de declarações.

Observação

Você pode usar ClaimsXRay no site da Ajuda do AD FS para auxiliar na solução de problemas de declarações.

Como as regras de declaração são processadas

As regras de declaração são processadas por meio do pipeline de declarações usando o mecanismo de declarações. O mecanismo de declarações é um componente lógico do Serviço de Federação que examina o conjunto de declarações de entrada apresentadas por um usuário e em seguida, dependendo da lógica em cada regra, produzirá um conjunto de declarações de saída.

Como criar uma regra de declaração

Regras de declaração são criadas separadamente para cada relação de confiança federada dentro do Serviço de Federação e não são compartilhadas entre várias relações de confiança. Você pode criar uma regra a partir de um modelo de regra de declaração, começar do zero criando a regra usando a linguagem da regra de declaração ou usar o Windows PowerShell para personalizar uma regra.

Entendendo os componentes da linguagem de regras de declaração

A linguagem da regra de declaração consiste nos seguintes componentes, separados pelo operador " =>":

  • Uma condição: usada para verificar as declarações de entrada e determinar se a instrução de emissão da regra deverá executar. Representa uma expressão lógica que deverá ser avaliada como true para executar a parte do corpo da regra.

  • Uma instrução de emissão.

Exemplo:

c:[type == "Name", value == "domain user"] => issue(type = "Role", value = "employee");

Essa declaração apresenta o seguinte:

  • Condição – c:[type == "Name", value == "domain user"] – avaliará a declaração de entrada se o nome da conta do Windows for um usuário de domínio.
  • Emissão – issue(type = "Role", value = "employee") – se a condição for verdadeira, adicionará uma nova declaração à declaração de entrada com a função de funcionário.

Para obter mais informações sobre as declarações e a sintaxe, consulte A função da linguagem da regra de declarações.

Editor de regras de declarações

A verificação de sintaxe é realizada pelo editor de regras de solicitações depois que você conclui a solicitação e seleciona OK. Portanto, se a sintaxe estiver incorreta, o editor informará você sobre isso.

Captura de tela da caixa de diálogo Gerenciamento do AD FS mostrando uma mensagem informando que a sintaxe da regra de declaração personalizada não é válida.

Logs de eventos

Ao tentar solucionar problemas de uma declaração usando os logs, a melhor abordagem será procurar a saída de declarações. Você pode procurar os eventos 1000 e 1001 no log de eventos.

Captura de tela da caixa de diálogo Propriedades do evento mostrando os resultados de uma ID do evento 1000.

Criar um aplicativo de exemplo

Também é possível criar um aplicativo de exemplo que ecoe as declarações. Por exemplo, você poderá usar um aplicativo de exemplo e criar uma terceira parte confiável contendo a mesma declaração que você está tentando solucionar e ver se o aplicativo apresentará algum problema com essa declaração.

Captura de tela do aplicativo de exemplo exibido em um navegador.

Um exemplo de aplicativo da Web válido está disponível aqui. Esse aplicativo ecoa as declarações que recebe da terceira parte confiável. Para usar isso, será necessário editar o aplicativo web.config:

  • Alterando https://app1.contoso.com/sampapp para a URL que será utilizada para hospedar o aplicativo de exemplo.
  • Alterando todas as instâncias de sts.contoso.com para apontar para o servidor de federação do AD FS.
  • Substituindo a impressão digital pela sua impressão digital.
  • Substituindo decryptionKey e validationKey por valores apropriados para seu cenário.

Captura de tela do Visual Studio mostrando o arquivo Web.config.

O seguinte artigo de blog contém instruções excelentes e detalhadas para essa configuração.

Próximas etapas