rundeck incapaz de auth no Active Directory

1

Estou tentando configurar o rundeck para que seja autenticado no Active Directory

Eu continuo recebendo esse erro

Owikicontéminformaçõessobreoerro403.Reason:!role link

Rundeck 2.6.2-1 (instalado a partir de .deb)
Ubuntu 14.04

jaas-ldap.conf

ldap {
    com.dtolabs.rundeck.jetty.jaas.JettyCachingLdapLoginModule required
    debug="true"
    contextFactory="com.sun.jndi.ldap.LdapCtxFactory"
    providerUrl="ldap://DC01.example.com:389"
    bindDn="cn=rundeck,OU=MyOU,DC=example,DC=com"
    bindPassword="correct-horse-battery-staple"
    authenticationMethod="simple"
    forceBindingLogin="true"
    userBaseDn="DC=example,DC=com"
    userRdnAttribute="sAMAccountName"
    userIdAttribute="sAMAccountName"
    userPasswordAttribute="unicodePwd"
    userObjectClass="user"
    roleBaseDn="DC=example,DC=com"
    roleNameAttribute="sAMAccountName"
    roleUsernameMemberAttribute="cn"
    roleMemberAttribute="member"
    roleObjectClass="group"
    cacheDurationMillis="300000"
    supplementalRoles="user"
    reportStatistics="true"
    timeoutRead="10000"
    timeoutConnect="20000"
    nestedGroups="true";
};

/var/lib/rundeck/exp/webapp/WEB-INF/web.xml

    ...
    <security-role>
            <role-name>Enterprise Admins</role-name>
    </security-role>
    ...

perfil

...
export RDECK_JVM="-Djava.security.auth.login.config=/etc/rundeck/jaas-ldap.conf \
    -Dloginmodule.name=ldap \
...

Sei que isso é contra as práticas recomendadas pelos seguintes motivos:

  • Usa autenticação "simples" e porta 389. Todas as senhas enviadas em texto simples !!!
  • baseDN são muito amplos, devem ser limitados para acelerar a pesquisa do ldap
  • Não precisa de um bindDN se estiver usando forceBindingLogin

Recursos adicionais:

link
link
link

    
por spuder 26.02.2016 / 00:11

1 resposta

1

Descobri que pelo menos no meu caso de uso eu tive que remover roleUsernameMemberAttribute

Também é importante ter supplementalRoles definido

O exemplo final de trabalho (não otimizado)

ldap {
    com.dtolabs.rundeck.jetty.jaas.JettyCachingLdapLoginModule required
    debug="true"
    contextFactory="com.sun.jndi.ldap.LdapCtxFactory"
    providerUrl="ldap://DC01.example.com:389"
    bindDn="cn=rundeck,OU=MyOU,DC=example,DC=com"
    bindPassword="correct-horse-battery-staple"
    authenticationMethod="simple"
    forceBindingLogin="true"
    userBaseDn="DC=example,DC=com"
    userRdnAttribute="sAMAccountName"
    userIdAttribute="sAMAccountName"
    userPasswordAttribute="unicodePwd"
    userObjectClass="user"
    roleBaseDn="DC=example,DC=com"
    roleNameAttribute="sAMAccountName"
    roleMemberAttribute="member"
    roleObjectClass="group"
    cacheDurationMillis="300000"
    supplementalRoles="user"
    reportStatistics="true"
    timeoutRead="10000"
    timeoutConnect="20000"
    nestedGroups="true";
};

Nota: Isso só faz a autenticação do ldap. Você também pode ter um híbrido de contas locais e contas ldap.

Atualizar

Documentação adicional & informações em esta questão do github

    
por 26.02.2016 / 00:11