Partilhar via


Quando usar uma regra para enviar atributos do LDAP como reivindicações

Você pode usar essa regra nos Serviços de Federação do Ative Directory (AD FS) quando quiser emitir declarações de saída que contenham valores reais de atributo LDAP (Lightweight Directory Access Protocol) existentes em um repositório de atributos e, em seguida, associar um tipo de declaração a cada um dos atributos LDAP. Para obter mais informações sobre repositórios de atributos, consulte A função dos repositórios de atributos.

Ao usar essa regra, você 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 regra Lógica da regra
Mapeamento de atributos LDAP para tipos de declaração de saída Se o repositório de atributos for igual a e o armazenamento de atributos especificado for, e se o atributo LDAP for igual a e o valor especificado for, então mapeie o valor do atributo LDAP para o tipo de declaração de saída especificado como , e emita a 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 a regra de envio de atributos LDAP como declarações.

Sobre as regras de reclamação

Uma regra de declaração representa uma instância da lógica de negócios que aceitará 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 saber sobre as regras de sinistro antes de ler mais neste tópico:

  • No snap-in de Gestão do AD FS, as regras de declaração só podem ser criadas utilizando modelos de regras de declaraçã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 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 regras de reivindicação e conjuntos de regras de reivindicação, consulte The Role of Claim Rules. 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 The Role of the Claims Pipeline.

Mapeamento de atributos LDAP para tipos de reivindicações de saída

Ao usar o modelo de regra Enviar atributos LDAP como declarações, você pode selecionar atributos de um repositório de atributos LDAP, como o Ative Directory ou os Serviços de Domínio Ative Directory (AD DS), para enviar seus valores como declarações para a terceira parte confiável. Isso essencialmente mapeia atributos LDAP específicos de um repositório de atributos que você define para um conjunto de declarações de saída que podem ser usadas para autorização.

Usando esse modelo, você pode adicionar vários atributos, que serão enviados como várias declarações, a partir de uma única regra. Por exemplo, pode usar este modelo de regra para criar uma regra que pesquisará valores de atributos para utilizadores autenticados dos atributos do Active Directory da empresa e do departamento , e, em seguida, enviará esses valores como duas declarações de saída diferentes.

Você também pode usar essa regra para enviar todas as associações de grupo do usuário. Se você quiser enviar apenas 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 Quando usar uma associação a um grupo de envio como uma regra de reivindicação.

Como criar esta regra

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

  • Especificar um nome de regra de declaração

  • Selecione 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, consulte Criar uma regra para enviar atributos LDAP como declarações.

Usando a linguagem de regras de reivindicação

Se a consulta ao Active Directory, AD DS, ou Active Directory Lightweight Directory Services (AD LDS) tiver de ser feita contra um atributo LDAP diferente de samAccountname, deverá utilizar uma regra personalizada. Se não houver nenhuma declaração de Nome de Conta do Windows no conjunto de entradas, você também deverá usar uma regra personalizada para especificar a declaração a ser usada para consultar o AD DS ou o AD LDS.

Os exemplos a seguir são fornecidos para ajudá-lo a entender algumas das várias maneiras de 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 a serem retornados em quaisquer objetos correspondentes.

O exemplo a seguir mostra como procurar um usuário pelo atributo sAMAccountName e emitir uma declaração de endereço de email, usando o valor do atributo mail 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 exemplo a seguir mostra como procurar um utilizador pelo atributo mail e emitir declarações de título e nome de exibição, usando os valores dos atributos título e displayname do utilizador.

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 exemplo a seguir mostra como procurar um utilizador por email e título e, em seguida, emitir uma declaração de Nome para Exibição usando o atributo displayname do utilizador :

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 Ative Directory e retornar um valor especificado

A consulta do Ative Directory deve 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 Ative Directory possa consultar o domínio correto. Caso contrário, a mesma sintaxe é suportada.

O exemplo a seguir mostra como procurar um utilizador pelo atributo sAMAccountName no 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 Ative 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 seguintes:

  • 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 RFC 2254. Quando você está consultando um repositório de atributos do Ative Directory e não especifica um filtro LDAP, a consulta samAccountName={0} é assumida e o repositório de atributos do Ative Directory espera 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 diferente do Ative Directory, não é possível omitir a parte do filtro LDAP da consulta ou a consulta resultará em um erro.

  • Especificação de atributos—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 dos objetos filtrados. O número de atributos especificado deve corresponder ao número de tipos de declaração definidos na consulta.

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

Exemplo: Como usar duas regras personalizadas para extrair o e-mail do gestor de um atributo no Active Directory

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

Por exemplo, quando essas regras terminam de ser executadas, é emitida uma declaração que contém o endereço de email do gerente para 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 somente se o gerente do usuário estiver 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