Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Você escreve uma regra de declaração personalizada nos Serviços de Federação do Ative Directory (AD FS) usando a linguagem da regra de declaração, que é a estrutura que o mecanismo de emissão de declarações usa para programaticamente gerar, transformar, passar e filtrar declarações. Usando uma regra personalizada, você pode criar regras com lógica mais complexa do que um modelo de regra padrão. Considere usar uma regra personalizada quando quiser:
Envie declarações com base em valores extraídos de um repositório de atributos SQL (Structured Query Language).
Envie declarações com base em valores extraídos de um repositório de atributos LDAP (Lightweight Directory Access Protocol) usando um filtro LDAP personalizado.
Envie declarações com base em valores extraídos de um repositório de atributos personalizado.
Envie declarações somente quando duas ou mais declarações de entrada estiverem presentes.
Envie declarações somente quando um valor de declaração de entrada corresponder a um padrão complexo.
Envie reivindicações com alterações complexas para um valor de reivindicação recebida.
Crie declarações para uso somente em regras posteriores, sem realmente enviar as declarações.
Construa uma declaração de saída a partir do conteúdo de mais de uma declaração de entrada.
Você também pode usar uma regra personalizada quando o valor da declaração de saída deve ser baseado no valor da declaração de entrada, mas também deve incluir conteúdo adicional.
A linguagem da regra de declarações é baseada em regras. Tem uma parte de condição e uma parte de execução. Você pode usar a sintaxe da linguagem da regra de declaração para enumerar, adicionar, excluir ou modificar declarações para atender às necessidades da sua organização. Para obter mais informações sobre como cada uma dessas partes funciona, consulte A função da linguagem da regra de declaração.
As seções a seguir fornecem uma introdução básica às regras de reivindicação. Eles também fornecem detalhes sobre quando usar uma regra de declaração personalizada.
Sobre as regras de reclamação
Uma regra de declaração representa uma instância da lógica de negócios que usa uma declaração de entrada, aplica uma condição a ela (se x, então y) e produz uma declaração de saída com base nos parâmetros da condição.
Important
- No snap-in de Gestão do AD FS, as regras de reivindicação apenas podem ser criadas usando modelos de regras de reivindicação.
- As regras de declaração processam as declarações de entrada, quer diretamente de um fornecedor de declarações (como o Active Directory ou outro Serviço de Federação), quer a partir da saída das regras de transformação de aceitação numa relação de confiança do fornecedor de declarações.
- As regras de declaração são processadas pelo mecanismo de emissão de declarações em ordem cronológica dentro de um determinado conjunto de regras. Ao definir a precedência nas regras, você pode refinar ou filtrar ainda mais as declarações geradas por regras anteriores dentro de um determinado conjunto de regras.
- Os modelos de regra de declaração sempre exigem que você especifique um tipo de declaração de entrada. No entanto, você pode processar vários valores de declaração com o mesmo tipo de declaração usando uma única regra.
Para obter informações mais detalhadas sobre regras de declaração e conjuntos de regras de declaração, consulte O papel das regras de declaração. Para obter mais informações sobre como as regras são processadas, consulte A função do mecanismo de declarações. Para obter mais informações sobre como os conjuntos de regras de declaração são processados, consulte O papel do pipeline de processamento de declarações.
Como criar esta regra
Para criar esta regra, primeiro crie a sintaxe necessária para a sua operação usando a linguagem de regras de declarações e, em seguida, cole o resultado na caixa de texto fornecida no modelo Enviar uma Declaração Usando uma Regra Personalizada nas propriedades de uma confiança do provedor de declarações ou de uma confiança de terceira parte confiável no snap-in Gestão do AD FS.
Este modelo de regra fornece as seguintes opções:
Especificar um nome de regra de declaração
Digite uma ou mais condições opcionais e uma declaração de emissão usando a linguagem da regra de declaração do AD FS
Para obter mais instruções sobre como criar uma regra personalizada usando esse modelo, consulte Criar uma regra para enviar declarações usando uma regra personalizada no Guia de Implantação do AD FS.
Para entender melhor como funciona a linguagem da regra de declaração, exiba a sintaxe da linguagem da regra de declaração de outras regras que já existem no snap-in clicando na guia Exibir Idioma da Regra nas propriedades dessa regra. Usar as informações desta seção e as informações de sintaxe nesta aba pode fornecer informações sobre como construir as suas próprias regras personalizadas.
Para obter mais informações sobre como usar o idioma da regra de declaração, consulte A função da linguagem da regra de declaração.
Usando a linguagem de regras de reivindicação
Exemplo: Como combinar nomes e sobrenomes com base nos valores de atributo de nome de um usuário
A sintaxe da regra a seguir combina primeiro e último nomes de valores de atributos no repositório de atributos dado. O mecanismo de política forma um produto cartesiano das correspondências para cada condição. Por exemplo, a saída para o primeiro nome {"Frank", "Alan"} e sobrenomes {"Miller", "Shen"} é {"Frank Miller", "Frank Shen", "Alan Miller", "Alan Shen"}:
c1:[type == "http://exampleschema/firstname" ]
&& c2:[type == "http://exampleschema/lastname",]
=> issue(type = "http://exampleschema/name", value = c1.value + " " + c2.value);
Exemplo: Como emitir uma reivindicação de gerente com base no facto de os utilizadores terem subordinados diretos
A regra a seguir emite uma declaração de gerente somente se o usuário tiver subordinados diretos:
c:[type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"] => add(store = "SQL Store", types = ("http://schemas.xmlsoap.org/claims/Reports"), query = "SELECT Reports FROM dbo.DirectReports WHERE UserName = {0}", param = c.value );
count([type == "http://schemas.xmlsoap.org/claims/Reports"] ) > 0 => issue(= "http://schemas.xmlsoap.org/claims/ismanager", value = "true");
Exemplo: Como emitir uma declaração PPID com base em um atributo LDAP
A regra a seguir emite uma declaração PPID (Private Personal Identifier) com base nos atributos windowsaccountname e originalissuer dos usuários em um repositório de atributos LDAP:
c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
=> issue(store = "_OpaqueIdStore", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier"), query = "{0};{1};{2}", param = "ppid", param = c.Value, param = c.OriginalIssuer);
Os atributos comuns que podem ser usados para identificar exclusivamente o usuário para essa consulta incluem o seguinte:
SID do usuário
windowsaccountname
samaccountname