23/01/2014

Autenticação via LDAP na Mediawiki com Postgres

Segue abaixo a compilação de várias formas de configuração, a qual funcionou para o meu ambiente.

Procedimentos iniciais

  1.  Descubra a versão da sua wiki. Para isso acesse o Link Páginas especiais e procure por versão.
  2. Faça download da extensão do LDAP de acordo com sua versão.
  3. Descompacte no diretório extensions da dua wiki:
    • $ tar -xzvf LdapAuthentication-MW1.13-r36354.tar.gz -C /var/www/mediawiki/extensions/LdapAuthentication/

Configuração do LDAP

Edite o arquivo LocalSettings.php e inclua o código abaixo:
## Habilitando o plugin do LDAP
require_once( "$IP/extensions/LdapAuthentication/LdapAuthentication.php" );
$wgAuth = new LdapAuthenticationPlugin();
## Definição do domínio
$wgLDAPDomainNames = array("NOME");
## Pode ser o ip ou hostname (servidor.dominio.com.br
$wgLDAPServerNames = array("NOME"=>"172.16.100.69");
$wgLDAPEncryptionType = array("NOME"=>"clear");
## Impede usuário local de logar
$wgLDAPUseLocal = false;
$wgMinimalPasswordLength = 1;
##
## Base LDAP onde a mediawiki ira procurar os usuários
$wgLDAPBaseDNs = array("NOME"=>"ou=grupogeral,dc=domino,dc=com,dc=br");
##
## Atributo para check, pesquisa e compara o que o usuário digitou para realizar
## o login no wiki, utilizando um tipo de atributo ldap (samaccountname, mail, uid...)
## que corresponde ao nome de usuário. Deve ser adaptado para suas configurações
$wgLDAPSearchAttributes = array("NOME"=>"uid");
## Aqui o complemento do forum, como meu LDAP utiliza uid, precisei definir o campo abaixo
## uid=USER-NAME.
$wgLDAPSearchStrings = array("NOME"=>"uid=USER-NAME,ou=grupogeral,dc=dominio,dc=com,dc=br");
## Transforma o login para minusculas
$wgLDAPLowerCaseUsername = array( 'NOME' => true );
##
## Restringe acesso aos membros deste grupo para logar na wiki :
$wgLDAPGroupDN = "cn=admin,ou=grupogeral,dc=dominio,dc=com,dc=br";
##
## Usuário proxy para leitura da base ldap: Não utilizei
## $wgLDAPProxyAgent = array("NOME"=>"cn=winbind.user,cn=users,dc=dominio,dc=com,dc=br");
##
## Senha deste usuário proxy. Não utilizei
## $wgLDAPProxyAgentPassword = array("NOME"=>"linux123");
##
## Checar se o usuário não estar desabilitado no ad:
$wgLDAPRequireAuthAttribute = array("NOME"=>true);
##
## A última linha da postagem base foi removida pois não permitia login.

PostgreSql

Essa configuração funciona perfeitamente em uma base MySQL, mas a mesma configuração não funciona quando a base de dados é Postgres. Um bug já reportado e que foi possível solucionar com o SQL abaixo:

CREATE TABLE ldap_domains (
      domain_id serial primary key,
      domain varchar(255) not null,
      user_id int not null
);

CREATE INDEX user_id on ldap_domains (user_id);

Links

Nenhum comentário:

Postar um comentário

Sinta-se a vontade para comentar!
Colaborações, criticas, sugestões, dúvidas, todos os comentários são bem vindos!