LDAP autenticando usuários

Plone Autenticando com LDAP / Active Directory (AD)

Vamos aprender a configurar o Plone para autenticar os usuários com a base do AD do seu Windows Server, muito utilizado em intranets.

Nesse post vou apenas tratar a configuração do Plone com o AD, mas a mesma analogia serve para o LDAP com OpenLDAP, não vou abordar a configuração do AD nem do OpenLDAP, vamos assumir que os usuários já funcionam nesses ambientes, estamos apenas incluindo a intranet.

Configurando o Plone para autenticar com LDAP.


O Active Directory é uma base LDAP, mas com uma boa camada de interfaces gráficas por cima.

A maior dificuldade para configurar o AD no Plone é ter acesso aos "caminhos" dos objetos do AD na notação LDAP, pois é dessa forma que devemos configurar no Plone.

Para facilitar a nossa vida existe um aplicativo que nos fornece os dados na notação LDAP.

Obtendo os dados LDAP no seu Windows Server


No servidor AD baixe o ADSI.

Esse é um plugin para o MMC, aquele aplicativo onde configuramos o AD e vários outras coisas no Windows.

Extraia os 2 arquivos desse .zip para a pasta C:\Windows\system32 ou a pasta system32 do seu sistema que pode estar em outro caminho.

Execute o arquivo adsiedit.msc, para isso ou clique 2 vezes ou vá em Iniciar -> "Executar..." e digite: adsiedit.msc, o system32 está no PATH, portanto pode-se executá-lo diretamente


Deixe esse aplicativo aberto, pois vamos buscar alguns dados nele, abaixo está a explicação de como pegar os dados.

Agora vamos ao Plone, acesse a ZMI (URL de exemplo: http://servidor:8080/Plone/manage)

Em acl_users (dentro do Plone Site) instalar o ActiveDirectory Multi Plugin.

Configurando o LDAP

Configuração: Na tela que aparece ao criar ou em /Plone/acl_users/UsuarioIntranet/acl_users aba Configure

LDAP Server
O IP do seu servidor AD (LDAP), configura-se na criação ou em /Plone/acl_users/UsuarioIntranet/acl_users na aba LDAP Servers
10.75.76.2

Title
Um título qualquer para identificar esse conteúdo

Login Name Attribute
Windows Login Name (sAMAccountName)

User ID Attribute
Canonical Name (cn)

RDN Attribute
Canonical Name (cn)

Users Base DN
Caminho LDAP para o diretório onde ficam os usuário no seu AD (ou LDAP)
Lá no adsiedit, clique com o botão direito na pasta de usuários e clique em Propriedades e procure pelo atributo distinguishedName e copie-o para esse campo.
CN=Users,DC=simplesnet,DC=simplesconsultoria,DC=com,DC=br

distinguishedName


Scope
SUBTREE

Group storage
Groups not stored on LDAP server

Group mapping (Applies to LDAP group storage only)
Automatically map LDAP groups to Zope roles

Groups Base DN
Caminho LDAP para o diretório onde ficam os grupos no seu AD (ou LDAP), nesse exemplo os grupos ficam junto com os usuários
Lá no adsiedit, clique com o botão direito na pasta de grupos e clique em Propriedades e procure pelo atributo distinguishedName e copie-o para esse campo.
CN=Users,DC=simplesnet,DC=simplesconsultoria,DC=com,DC=br

Scope
SUBTREE

Manager DN
Caminho LDAP do usuário que usaremos para acessar o AD (LDAP), pode ser um usuário comum, porém terá que ser como somente leitura
Lá no adsiedit, clique com o botão direito no usuário que fará a conexão ao AD e clique em Propriedades e procure pelo atributo distinguishedName e copie-o para esse campo.
CN=Luciano Pacheco,CN=Users,DC=simplesnet,DC=simplesconsultoria,DC=com,DC=br

Password
Senha do usuário informado no Manager DN (essa senha será usado no acesso ao LDAP)

Manager DN Usage
Always

Read-only
Verdadeiro se o usuário informado em Manager DN não for administrador no AD (LDAP)

User object classes
Utilize o padrão
top,person

Additional user search filter
Deixe Vazio

User password encryption
SSHA

Default User Roles
Qual é o papel padrão dos usuário do AD (LDAP). Por padrão usamos Member
Member

Testando

Depois de configurado acesse /Plone/acl_users/UsuarioIntranet/acl_users aba Users

Faça uma busca por um usuário que você saiba que exista no AD (LDAP), use admin que deve aparecer o Administrator ou Administrador. ;-)

Se achar o usuário já está praticamente funcionando. :-) Um viva para nós!

Mais uns detalhezinhos


Acesse /Plone/acl_users/UsuarioIntranet na aba Properties e configure:
groupid_attr para sAMAccountName

Mapeando propriedades do usuário para o AD

Propriedades do usuário


Acesse /Plone/acl_users/UsuarioIntranet/acl_users na aba LDAP Schema.

Já existem algumas propriedades padrão configuradas.

Vamos adicionar o e-mail como exemplo.

Na parte inferior da tela você pode adicionar novas propriedades.

LDAP Attribute Name
Nome do atributo do usuário lá no AD, verifique os atributos disponíveis através do adsiedit
Exemplo: mail

Friendly Name
Nome amigável para o usuário

Multi-valued
Nunca usei, mas deve ser algo como uma lista

Binary
Nunca usei, não sei qual seria o caso de uso

Map to Name (optional)
Nome que será utilizado dentro do Plone
Exemplo: email