Autenticando Grupos Aninhados no LDAP

4

Não sei muito sobre o LDAP, por isso peço desculpas antecipadamente.

Estou vendo um bug em um aplicativo que faz alguma autenticação usando o LDAP.

A estrutura do diretório LDAP configurada pelo cliente contém grupos aninhados e se parece com o seguinte:

UAT Group
    DEV Group
         portfolio_mangers

Sob o grupo DEV, temos alguns usuários:

DEV Group
     jsmith
     cwilson
     plo

O usuário requer que a autenticação atravesse recursivamente o grupo de entrada para determinar se o usuário é direta ou indiretamente (aninhado) como membro do grupo de entrada.

Portanto, se começarmos nosso percurso no Grupo UAT ou no Grupo DEV, os usuários jsmith, cwilson e plo serão autenticados.

Isso é possível, correto? De minha leitura, creio que tenho que especificar um nome base e escopo. E como eu quero pesquisar uma subárvore inteira, eu especificaria um escopo de SUBTREE. Isso faz sentido? Existem alternativas?

Conselhos de pessoas experientes do LDAP seria tremendo. Obrigado.

    
por Tim 10.01.2012 / 03:17

2 respostas

2

Qual aplicativo você está tentando configurar.

A grande maioria dos aplicativos que têm algum nível de suporte LDAP como um cliente LDAP simplesmente não tem suporte para grupos aninhados.

Além de modificar o software, você pode estar sem sorte.

Se o seu servidor LDAP for o Microsoft Active Directory, existe um filtro de pesquisa não padrão, que pode ajudá-lo.

Veja: - link - link

The LDAP_MATCHING_RULE_IN_CHAIN is a matching rule OID that is designed to provide a method to look up the ancestry of an object. Many applications using AD and AD LDS usually work with hierarchical data, which is ordered by parent-child relationships. Previously, applications performed transitive group expansion to figure out group membership, which used too much network bandwidth; applications needed to make multiple roundtrips to figure out if an object fell "in the chain" if a link is traversed through to the end.

    
por 10.01.2012 / 03:26
0

Se você souber qual grupo específico está autorizado, comece com isso.

Você receberá uma referência ao nome distinto LDAP desse objeto e enumerará o atributo member do objeto. Isso conterá nomes mais distintos.

Verifique cada um desses objetos. Se for um usuário, ele é um membro do grupo, adicione-o à lista de usuários autorizados. Se for um grupo, enumere seu objeto member como acabou de fazer para o grupo 'base', adicionando usuários à lista permitida e enumerando grupos.

Eu aconselho colocar um limite na recursão (ou melhor, uma lista que monitora quais objetos foram verificados para evitar checá-los duas vezes), já que loops infinitos são possíveis em relacionamentos com membros de grupos.

Você criará uma lista de todos os objetos de usuário autorizados e, em seguida, comparará o nome distinto do usuário de autenticação para ver se está na lista de autorização.

A base e o escopo da pesquisa são para limitar o escopo das pesquisas de objeto tentadas; você desejará usar um local que contenha tudo o que você está vendo.

    
por 10.01.2012 / 03:28

Tags