Abrir sincronização LDAP e ActiveDirectory

2

Eu tenho procurado no Google por um tempo para descobrir a melhor maneira de sincronizar o banco de dados do usuário entre o OpenLDAP e um ActiveDirectory, mas sem resultados claros!

O que eu quero alcançar é ter um banco de dados de usuários no OpenLDAP e depois preenchê-los no AD para que esses usuários possam acessar todos os meus aplicativos (e-mail, vpn, servidor de arquivos e quase todos os aplicativos opensource). Basicamente, o que estou tentando fazer é criar um único SignOn DB para que todos os usuários possam ter as mesmas senhas para aplicativos baseados em Windows e Linux, mas também quero ter certeza de que as senhas sejam atualizadas bidirecionalmente.

Eu apreciarei se alguém puder compartilhar sua experiência sobre como isso pode ser feito. Obrigado !!

    
por Bouanani Meher 19.03.2013 / 18:24

1 resposta

2

O que funcionará para a sincronização unidirecional, mas com um pouco de "algum assembly necessário" é:

OpenLDAP → OpenLDAP replica → ActiveDirectory

em que a réplica intermediária do OpenLDAP usa um perl backend - em vez de armazenamento persistente. Você deve gravar um módulo perl que forneça 9 funções (da última vez que verifiquei) que são mapeadas para as chamadas da API LDAP ( bind , search , compare , modify , add etc.).

Dentro deste código você pode fazer qualquer atributo / classe de objeto e o mapeamento de nomes pode ser necessário. Há configuração de amostra e código na distribuição de origem ( SampleLDAP.pm ). Estimar 1000-1500 linhas de código para uma implementação robusta no mundo real.

Uma abordagem um pouco mais simples é pesquisar no diretório de origem por objetos modificados, e empurrar as alterações, veja o lsc projeto para uma implementação. Essa abordagem pode ter problemas de latência e escalabilidade. Com um método de pesquisa, você pode trapacear um pouco com OpenLDAP pesquisando por adicionando os controles syncrepl , e isso te dá uma versão mais simples da abordagem back-perl - a vantagem é que você não precisa implementar a API, você só precisa processar os resultados da pesquisa que são enviados para você como mudanças ocorrem, e propagá-los (e salvar estado / reconectar em erro).

Você terá que pensar muito sobre o manuseio de senhas, os atributos de senha ( userPassword , unicodePwd ) são efetivamente mágicos . Eu sempre fui capaz de convencer as pessoas de sincronização de senha bidirecional, então só posso oferecer conselhos básicos (a menos que eu possa falar com você também; -)

A abordagem usual é capturar alterações de senha sob o disfarce de "verificação de complexidade", criar o hash / format da senha conforme necessário e propagar esses valores, consulte PasswdHk .

Você pode "convencer" seus usuários a usar um método alternativo de alteração / redefinição de senha, e isso pode propagar mudanças, algo como Senha de Autoatendimento (isso somente define senhas em um local).

A Red Hat tem alguma documentação útil ( Embora o DS subjacente não seja mais o OpenLDAP, grande parte da teoria ainda se aplica. AFAICT as versões atuais ainda não entraram no CentOS 6.

PCNS é a maneira da Microsoft, acredito que possa enviar senhas para o OpenLDAP (mas não faça o contrário) . XMA afirma fazer as duas coisas, embora eu não tenha usado.

Veja também: Sincronização do Active Directory e OpenLDAP abrange uma abordagem híbrida usando < em> Kerberos que elimina a sincronização de senhas (embora isso torne o AD autoritativo para autenticação).

Em suma, comece lendo a documentação lsc , pode fazer o que você quiser.

    
por 20.03.2013 / 19:43