Eu tenho medo que RFC 2256 e seus descendentes sejam os culpados aqui: De acordo com a RFC, uma pessoa não tem um givenName e seu servidor LDAP está (corretamente) se recusando a permitir que você atribua esse atributo.
Você tem algumas opções: Você pode usar cn
(nome comum) como apenas o primeiro nome, adicionar uma classe de objeto adicional (como inetOrgPerson) que ofereça givenName ou escolher uma ObjectClass estrutural diferente (como inetOrgPerson) para basear seu objeto em.
De modo geral, inetOrgPerson é a classe de objeto "pessoa" que você deseja usar de qualquer maneira: é muito mais útil do que a pessoa LDAP de baunilha.
Atualização Re: sua atualização. A string funky que você está obtendo como resultado para givenName
é na verdade uma string codificada na base 64 ( VGhvbWFzIA==
= > Thomas
). A maioria dos clientes poderá decodificá-lo automaticamente, não sei por que o seu não foi feito (provavelmente uma falha de configuração em algum lugar).