Jenkins / Hudson - o grupo LDAP * procura * não funciona

2

Estou tentando fazer com que o Jenkins autentique os usuários por meio de nossos grupos de diretórios ativos.

Se eu inserir usuários, eles serão pesquisados corretamente. Se eu inserir nomes de grupos, eles não serão encontrados.

Editar: através do teste & erro Descobri que a autenticação através dos grupos funciona de fato , ou seja, depois de adicionar o grupo KS-Soft à lista, os usuários desse grupo < em> pode logar . No entanto , na lista em que os usuários e os nomes dos grupos são inseridos, o Jenkins tenta exibir um ícone para ser um usuário ou um grupo. O ícone do usuário é exibido corretamente, mas o ícone do grupo é sempre um ícone de erro.

Assim, parece que o Jenkins pode autenticar os usuários através da associação ao grupo, mas ele não consegue verificar se uma determinada string de nome do grupo existe no diretório. Isso é tecnicamente possível? (Talvez apenas a exibição do ícone esteja desarrumada.)

As configurações do Jenkins são as seguintes: (nota: mydomain e com nomes de usuários são diferentes, o resto são valores exatos)

Server  : ldap://ks-dc01.mydomain.com:389
root DN : dc=mydomain,dc=com
User Search Base : ou=KSUser
User Search Filter : userPrincipalName={0}
Group search base : ou=KSGroups
Manager DN : CN=Placeholder Martin,OU=Benutzer,OU=KSUser,DC=mydomain,DC=com
Manager Password : *****

Com essa configuração, eu insiro o usuário [email protected] na lista e Jenkins pode procurar esse usuário e eu posso fazer o login.

No entanto, não consigo fazer com que Jenkins resolva os nomes dos grupos. Eu uso o AD Explorer para confirmar que meus grupos estão, de fato, abaixo de OU=KSGroups .

Eu tenho um grupo aqui exibido como CN=KS-Soft no AD Explorer e tem um atributo member que lista todos os usuários que me interessam. (O usuário [email protected] está listado como CN=Placeholder Martin,OU=Benutzer,OU=KSUser,DC=mydomain,DC=com neste atributo.

Eu tentei esta string para o grupo:

Observe que a ajuda do Jenkins tem o seguinte a dizer sobre o Group search base :

One of the searches Jenkins does on LDAP is to locate the list of groups for a user.

This field determines the query to be run to identify the organizational unit that contains groups. The query is almost always "ou=groups" so try that first, though this field may be left blank to search from the root DN.

If login attempts result in "Administrative Limit Exceeded" or similar error, try to make this setting as specific as possible for your LDAP structure, to reduce the scope of the query. If the error persists, you may need to edit the WEB-INF/security/LDAPBindSecurityRealm.groovy file that is included in jenkins.war. Change the line with: groupSearchFilter = "(| (member={0}) (uniqueMember={0}) (memberUid={1}))"; to query only of the field used in your LDAP for group membership, such as: groupSearchFilter = "(member={0})"; Then restart Jenkins and retry the login.

Eu tentei os dois valores neste arquivo e nenhum deles funciona.

    
por Martin 01.07.2011 / 14:55

3 respostas

3

teve o mesmo problema hoje com o Jenkins 2. LDAP está configurado funcionando e eu consigo logar como usuário do AD, eu posso adicionar o usuário AD à matriz, mas quando eu adiciono um grupo em matriz, ele mostra "usuário / grupo não encontrado" para esse grupo.

Finalmente consertado link

A correção é adicionar (& (cn={0}) (objectclass=group) ) como filtro de pesquisa do grupo.

Por padrão, o Jenkins usa (& (cn={0}) (| (objectclass=groupOfNames) (objectclass=groupOfUniqueNames) (objectclass=posixGroup)))

Nosso grupo AD tem apenas

objectClass: top
objectClass: group
    
por 28.04.2017 / 19:33
2

Acabei de descobrir da maneira mais difícil esta manhã que Jenkins é sensível a casos quando se trata de nomes de grupos AD.
Basta adicionar isso como resposta, caso alguém esteja puxando o cabelo para fora em frustração. É totalmente não óbvio, já que os nomes de grupos AD normalmente não diferenciam maiúsculas e minúsculas em nenhum lugar.

    
por 25.03.2014 / 13:53
1

Tente tornar seu groupSearchBase totalmente qualificado, ou seja, "ou = KSGroups, dc = mydomain, dc = com". Além disso, os nomes de grupos quase certamente não terminarão em "@ meudominio.com.br" (a menos que você os tenha indicado dessa forma de propósito).

Sugiro usar o "ldapsearch" das ferramentas openldap ou uma ferramenta de linha de comando semelhante para o Windows testar as variações do groupSearchFilter até encontrar uma que forneça os resultados desejados. e depois importá-lo para o arquivo .groovy.

    
por 02.07.2011 / 02:31