Sobre a primeira pergunta:
Eu trabalhei com outro sistema LDAP que permitia 'login' contra vários atributos do usuário. A solução foi fazer duas conexões. A primeira conexão, provavelmente vinculada anonimamente, consulta o LDAP com as informações fornecidas pelo usuário para localizar o RDN de seu objeto de usuário. A segunda conexão tenta uma ligação com senha com o RDN descoberto e a senha fornecida. É um processo de dois passos e funciona.
No entanto, se esse aplicativo tiver muitos logons com atributos fornecidos que não sejam o próprio RDN, será uma boa ideia indexar esses atributos. É uma coisa de performance.
Dois:
O OpenLDAP suporta LDAP-SSL tanto quanto me lembro (TCP / 636), que pode ser uma rota melhor que um túnel HTTPS. Por padrão, os vínculos LDAP estão limpos, mas existem extensões LDAP que permitem métodos adicionais. O Active Directory permite vinculações com o NTLM LDAP, por exemplo, e tenho certeza de que o LDAP também foi kerberizado em algum momento. Não sei quais métodos o openLDAP suporta.
Três:
Eu tenho fontes LDAP que possuem e-mails do formato "[email protected]" em atributos. Onde fica mais arriscado é com os atributos de nomeação, e é aí que minha experiência de openLDAP cai. Eu não sei o que ele suporta para isso. Eu sei que o Active Directory permite espaços nos atributos de nomenclatura, e o Novell eDirectory permite espaços e períodos (embora não seja recomendado fazer isso). Normalmente, o atributo de nomeação é userID e os atributos como givenName, surname, emailAddress, contêm os caracteres especiais. Como eles não estão nomeando atributos, eles não têm as mesmas restrições.