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.