Compartilhar via


Quando usar uma regra Enviar Atributos LDAP como Declarações

Você pode usar essa regra no AD FS (Serviços de Federação do Active Directory) quando desejar emitir declarações de saída que contêm valores de atributo LDAP reais que existem em um repositório de atributos e, em seguida, associar um tipo de declaração de cada um dos atributos LDAP. Para obter mais informações sobre repositórios de atributos, confira A função dos repositórios de atributos.

Quando você usa essa regra, emite uma declaração para cada atributo LDAP especificado e que corresponde à lógica da regra, conforme descrito na tabela a seguir.

Opção de regras Lógica de regras
Mapeamento de atributos LDAP para tipos de declaração de saída Se o repositório de atributos é igual ao repositório de atributos especificado e o atributo LDAP é igual ao valor especificado, mapeie o valor do atributo LDAP para o tipo de declaração de saída especificada e emita a declaração.

As seções a seguir fornecem uma introdução básica às regras de declaração. Elas também fornecem detalhes sobre quando usar uma regra Enviar Atributos LDAP como Declarações.

Sobre as regras de declaração

Uma regra de declaração representa uma instância de lógica de negócios que obterá uma declaração de entrada, aplicará uma condição a ela (se x, então y) e produzirá uma declaração de saída com base nos parâmetros da condição. A lista a seguir descreve dicas importantes que você deve conhecer sobre as regras de declaração antes de ler mais neste tópico:

  • No snap-in Gerenciamento do AD FS, as regras de declaração só podem ser criadas usando modelos de regra de declaração

  • Regras de declaração processam declarações de entrada diretamente de um provedor de declarações (como o Active Directory ou outro Serviço de Federação) ou da saída das regras de transformação de aceitação em uma relação de confiança com o provedor 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 em regras, você pode refinar ou filtrar mais as declarações geradas pelas regras anteriores dentro de um determinado conjunto de regras.

  • Os modelos de regra de declaração sempre exigirão 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 as regras de declaração e os conjuntos de regras de declaração, confira A função das regras de declaração. Para obter mais informações sobre como as regras são processadas, confira 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, confira A função do pipeline de declarações.

Mapeamento de atributos LDAP para tipos de declaração de saída

Quando você usa o modelo de regra Enviar Atributos LDAP como Declarações, pode selecionar atributos de um repositório de atributos LDAP, como Active Directory ou AD DS (Serviços de Domínio do Active Directory), para enviar seus valores como declarações para a terceira parte confiável. Essencialmente, isso mapeia atributos LDAP específicos de um repositório de atributos definido para um conjunto de declarações de saída que pode ser usado para autorização.

Usando esse modelo, você pode adicionar vários atributos, que serão enviados como várias declarações, de uma única regra. Por exemplo, você pode usar esse modelo de regra para criar uma regra que pesquisará valores de atributo para os usuários autenticados por meio dos atributos do Active Directory company e department e enviará esses valores como duas declarações de saída diferentes.

Use também essa regra para enviar todas as associações a um grupo do usuário. Se você desejar enviar apenas as associações de grupo individuais, use o modelo de regra Enviar Associação de Grupo como uma Declaração. Para obter mais informações, consulte When to Use a Send Group Membership as a Claim Rule.

Como criar essa regra

Você pode criar essa regra usando a linguagem de regra de declaração ou o modelo de regra Enviar Atributos LDAP como Declarações no snap-in Gerenciamento do AD FS. Essa regra fornece as seguintes opções de configuração:

  • Especificar um nome de regra de declaração

  • Selecionar um repositório de atributos do qual extrair atributos LDAP

  • Mapeamento de atributos LDAP para tipos de declaração de saída

Para obter mais informações sobre como criar essa regra, confira Criar uma regra para enviar atributos LDAP como declarações.

Usando linguagem de regra de declaração

Se a consulta ao Active Directory, AD DS, ou ao AD LDS (Active Directory Lightweight Directory Services) deve realizar a comparação com um atributo LDAP que não o samAccountname, você deve usar uma regra personalizada em vez disso. Se não houver nenhuma declaração de Nome da Conta do Windows no conjunto de entrada, você também deve usar uma regra personalizada para especificar a declaração a ser usada para consultar o AD DS ou AD LDS.

Os exemplos a seguir são fornecidos para ajudá-lo a entender algumas das várias maneiras que você pode construir uma regra personalizada usando a linguagem da regra de declaração para consultar e extrair dados em um repositório de atributos.

Exemplo: como consultar um repositório de atributos do AD LDS e retornar um valor especificado

Os parâmetros devem ser separados por ponto e vírgula. O primeiro parâmetro é o filtro LDAP. Os parâmetros subsequentes são os atributos para retornar em quaisquer objetos correspondentes.

O exemplo a seguir mostra como pesquisar um usuário pelo atributo sAMAccountName e emitir uma declaração de endereço de email usando o valor do atributo de email do usuário:

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "AD LDS", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = "sAMAccountName={0};mail", param = regexreplace(c.Value, "(?<domain>[^\\]+)\\(?<user>.+)", "${user}"));

O seguinte exemplo mostra como pesquisar um usuário pelo atributo mail e emitir declarações de Título e Nome de Exibição usando os valores dos atributos title e displayname do usuário:

c:[Type == " http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress ", Issuer == "AD AUTHORITY"]
=> issue(store = "AD LDS ", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/title","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/displayname"), query = "mail={0};title;displayname", param = c.Value);

O seguinte exemplo mostra como pesquisar um usuário pelo email e pelo título e, em seguida, emitir uma declaração de Nome de Exibição usando o atributo displayname:

c1:[Type == " http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"] && c2:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/title"]
=> issue(store = "AD LDS ", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/displayname"), query = "(&(mail={0})(title={1}));displayname", param = c1.Value, param = c2.Value);

Exemplo: como consultar um repositório de atributos do Active Directory e retornar um valor especificado

A consulta ao Active Directory precisa incluir o nome do usuário (com o nome de domínio) como o parâmetro final para que o repositório de atributos do Active Directory possa consultar o domínio correto. Caso contrário, a mesma sintaxe tem suporte.

O exemplo a seguir mostra como pesquisar um usuário pelo atributo sAMAccountName em seu domínio e, em seguida, retornar o atributo mail:

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = "sAMAccountName={0};mail;{1}", param = regexreplace(c.Value, "(?<domain>[^\\]+)\\(?<user>.+)", "${user}"), param = c.Value);

Exemplo: como consultar um repositório de atributos do Active Directory com base no valor de uma declaração de entrada

c:[Type == "http://test/name"]

   => issue(store = "Enterprise AD Attribute Store",

         types = ("http://test/email"),

         query = ";mail;{0}",

         param = c.Value)

A consulta anterior é composta pelas três partes a seguir:

  • O filtro LDAP: você especifica essa parte da consulta para recuperar os objetos para os quais deseja consultar os atributos. Para obter informações gerais sobre consultas LDAP válidas, consulte a RFC 2254. Quando você estiver consultando um repositório de atributos do Active Directory e não especificar um filtro LDAP, a consulta samAccountName={0} será presumida e o repositório de atributos do Active Directory esperará um parâmetro que possa alimentar o valor para {0}. Caso contrário, a consulta resultará em um erro. Para um repositório de atributos LDAP que não o Active Directory, você não pode omitir a parte do filtro LDAP da consulta ou a consulta resultará em um erro.

  • Especificação do atributo: nesta segunda parte da consulta, você especifica os atributos (que são separados por vírgulas se você usar vários valores de atributo) que deseja fora dos objetos filtrados. O número de atributos especificados deve corresponder ao número de tipos de declaração que você define na consulta.

  • Domínio do Active Directory: você especifica a última parte da consulta somente quando o repositório de atributos é o Active Directory. (Não é necessário quando você consulta outros repositórios de atributos.) Essa parte da consulta é usada para especificar a conta de usuário no formato domínio\nome. O repositório de atributos do Active Directory usa a parte do domínio para determinar o controlador de domínio apropriado ao qual se conectar e executar a consulta e solicitar os atributos.

Exemplo: como usar duas regras personalizadas para extrair o email do gerente de um atributo no Active Directory

As duas regras personalizadas a seguir, quando usadas em conjunto na ordem mostrada abaixo, consultam o Active Directory para o atributo manager da conta de usuário (Regra 1) e, em seguida, usam esse atributo para consultar a conta do usuário do gerente para o atributo mail (Regra 2). Por fim, o atributo mail é emitido como uma declaração "ManagerEmail". Em resumo, a Regra 1 consulta o Active Directory e passa o resultado da consulta para a Regra 2, que extrai os valores de email do gerente.

Por exemplo, quando a execução dessas regras termina, é emitida uma declaração que contém o endereço de email do gerente de um usuário no domínio corp.fabrikam.com.

Regra 1

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
=> add(store = "Active Directory", types = ("http://schemas.xmlsoap.org/claims/ManagerDistinguishedName"), query = "sAMAccountName=
{0};mail,userPrincipalName,extensionAttribute5,manager,department,extensionAttribute2,cn;{1}", param = regexreplace(c.Value, "(?
<domain>[^\\]+)\\(?<user>.+)", "${user}"), param = c.Value);

Regra 2

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
&& c1:[Type == "http://schemas.xmlsoap.org/claims/ManagerDistinguishedName"]
=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/claims/ManagerEmail"), query = "distinguishedName={0};mail;{1}", param = c1.Value,
param = regexreplace(c1.Value, ".*DC=(?<domain>.+),DC=corp,DC=fabrikam,DC=com", "${domain}\username"));

Observação

Essas regras funcionam apenas se o gerente do usuário está no mesmo domínio que o usuário (corp.fabrikam.com neste exemplo).

Referências adicionais

Criar uma regra para enviar atributos LDAP como declarações