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.