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.
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.
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.
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
evalidationKey
por valores apropriados para seu cenário.
O seguinte artigo de blog contém instruções excelentes e detalhadas para essa configuração.