Partilhar via


Resolução de problemas do AD FS: sintaxe das regras de declarações

Uma reivindicação é uma declaração que um sujeito faz sobre si mesmo ou sobre outro assunto. Uma parte confiável emite as declarações. Eles recebem um ou mais valores e, em seguida, são empacotados em tokens de segurança que o servidor dos Serviços de Federação do Ative Directory (AD FS) emite. Este artigo trata da sintaxe e da criação das declarações. Para obter informações sobre a emissão de declarações, consulte Solucionar problemas do AD FS.

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

As regras de reivindicação são processadas pelo pipeline de reivindicações utilizando o motor de reivindicações . O mecanismo de declarações é um componente lógico do AD FS que examina o conjunto de declarações de entrada apresentadas por um usuário. Dependendo da lógica em cada regra, ele produz um conjunto de declarações resultantes.

Como criar uma regra de reivindicação

As regras de declaração são criadas separadamente para cada relação de confiança federada no AD FS. Eles não são compartilhados entre vários trusts. É possível:

  • Crie uma regra a partir de um modelo de regra de declaração de .
  • Comece do zero, elaborando a regra usando a linguagem de regras de declaração .
  • Use o Windows PowerShell para personalizar uma regra.

Componentes da linguagem de regras de reivindicação

O idioma 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 declaração de emissão da regra deve ser executada. Ele representa uma expressão lógica que deve ser avaliada como true para executar a parte do corpo da regra.
  • Uma declaração de emissão.

Aqui está um exemplo:

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

Esta alegação tem:

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

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

Editor de regras de declarações

O editor de regras de declarações executa a verificação de sintaxe depois que você conclui a declaração e seleciona OK. Se você tiver a sintaxe incorreta, o editor informa.

Captura de tela que mostra a caixa de diálogo Gerenciamento de A D F S com uma mensagem informando que a sintaxe da regra de declaração personalizada não é válida.

Logs de eventos

Quando você tenta solucionar problemas de uma declaração usando os logs, a melhor abordagem é procurar a saída de declarações. Procura os eventos 1000 e 1001 no registo de eventos.

Captura de tela que mostra a caixa de diálogo Propriedades do evento com os resultados de um evento 1000 I D.

Criar um aplicativo de exemplo

Você também pode criar um aplicativo de exemplo que ecoa suas declarações. Por exemplo, você pode usar um aplicativo de exemplo e criar uma terceira parte confiável que tenha a mesma declaração que você está tentando solucionar e ver se o aplicativo tem algum problema com essa declaração.

Captura de tela que mostra o aplicativo de exemplo em um navegador.

Um bom aplicativo Web de exemplo está disponível. O app ecoa as declarações que recebe da parte confiável. Para usá-lo, edite o aplicativo web.config:

  • Altere https://app1.contoso.com/sampapp para a URL usada para hospedar o aplicativo de exemplo.
  • Altere todas as instâncias de sts.contoso.com para apontarem para o seu servidor de AD FS.
  • Substitua a impressão digital existente pela sua impressão digital.
  • Substitua os valores decryptionKey e validationKey por valores apropriados para o cenário.

Captura de tela que mostra o arquivo de configuração da Web no Visual Studio.

Este artigo do blog tem instruções excelentes e detalhadas para configurar o aplicativo.