Autenticação do utilizador baseada em LDAP
Como funciona
O módulo LDAP auth do [wiki: WikiMoinMoin MoinMoin] permite o single-sign-on (SSO) - assumindo que já tem uma directoria LDAP com os seus utilizadores, senhas e endereços de correio electrónico. Em Linux isto pode ser um servidor !OpenLDAP, num servidor de Windows (geralmente o controlador de domínio) é chamado de "Active Directory" (abreviatura: AD). st Isto funciona assim:
- O utilizador submete o seu nome e senha através da acção de acesso do moin e clica no botão de acesso.
- Ao aceder, o módulo ldap_login auth compara o nome de utilizador/senha com o LDAP.
Se o nome de utilizador/senha estiverem correctos para o LDAP, este cria e actualiza um perfil de utilizador com valores do ldap (nome, alias, endereço de correio electrónico) e cria um objecto de utilizador no processo do MoinMoin. Depois entrega-o ao módulo auth seguinte...
- Se o nome de utilizador/senha não estiver correcto para o LDAP, este impede o acesso e cancela a cadeia de módulos de acesso.
- Normalmente, utiliza-se o moin_session como o módulo auth final para ligar a sessão ao utilizador. Este utiliza a cookie para manter a sessão e criar o objecto do utilizador em todos os pedidos sem acesso subsequentes.
Instalar
Necessita de instalar o módulo python-ldap (e tudo de que depende; consulte a sua documentação).
Necessita de um servidor LDAP ou AD.
Configurar a autenticação LDAP
Coloque isto na configuração do seu wiki (com avanços no texto de fora idêntica à das outras definições):
from MoinMoin.auth.ldap_login import ldap_login
from MoinMoin.auth import moin_session
auth = [ldap_login, moin_session]
import ldap
ldap_uri = 'ldap://ad.example.org' # servidor ldap / active directory URI
# Podemos utilizar um utilizador e senha fixos para corresponder aos do LDAP.
# Tenha cuidado caso precise de uma char % nessas strings - uma vez que são utilizadas como
# uma format string, tem de escrever %% para obter uma % no fim.
#ldap_binddn = 'utilizadorbind@exemplo.org'
#ldap_bindpw = 'segredo'
# Se o seu OpenLDAP for para samba 3 ou outro modelo de controlador de domínio
# auth backend, precisa de adicionar como binddn e bindpw o seu rootdn chain (Manager
# ou outro) e respectiva senha.
#ldap_binddn = 'cn=Manager,dc=example,dc=org'
#ldap_bindpw = 'secret'
# ou podemos utilizar o nome do utilizador e a senha que obtivemos do utilizador:
ldap_binddn = '%(nome-de-utilizador)s@exemplo.org' # DN que utilizamos para o primeiro bind (AD)
#ldap_binddn = 'cn=admin,dc=exemplo,dc=org' # DN que utilizamos para o primeiro bind (OpenLDAP)
ldap_bindpw = '%(senha)s' # senha que utilizamos para o primeiro bind
ldap_base = 'ou=UMAUNIDADE,dc=exemplo,dc=org' # DN de base que utilizamos para pesquisar
ldap_scope = ldap.ÂMBITO_SUBÁRVORE # âmbito da pesquisa
ldap_filter = '(sAMAccountName=%(nome-de-utilizador)s)' # filtro ldap utilizado para pesquisar
# para openLDAP em controlador de domínio, é necessário alterar o ldap_filter:
#ldap_filter = '(uid=%(username)s)' # filtro ldap utilizado em controladores de domínio samba
# pode também ter um filtro mais complexo como:
# "(&(cn=%(nome-de-utilizador)s)(memberOf=CN=UtilizadoresWiki,OU=Grupos,DC=exemplo,DC=org))"
ldap_givenname_attribute = 'givenName' # atributo ldap do qual obtemos o nome próprio
ldap_surname_attribute = 'sn' # atributo ldap do qual obtemos o apelido
ldap_aliasname_attribute = 'displayName' # atributo ldap do qual obtemos o alias
ldap_email_attribute = 'mail' # atributo ldap do qual obtemos o endereço de correio electrónico
ldap_email_callback = None # a função que é chamada com um dicionário (dict) como o primeiro argumento que fornece os dados de LDAP. A função tem de devolver o endereço de correio electrónico que foi gerado a partir da entrada do dicionário
ldap_coding = 'utf-8' # codificação utilizada para as queries do ldap e valores de resultados
ldap_timeout = 10 # tempo de espera para o servidor ldap
ldap_verbose = True # se for True, coloca informação de debug do LDAP debug no log
cookie_lifetime = 1 # 1 hora depois do último acesso ldap, é pedido de novo
user_autocreate = True
# não permitimos ao utilizador a possibilidade de alterar esses valores na página das PreferênciasDoUtilizador
user_form_disable = ['nome', 'nome do alias', 'endereço de correio electrónico', ]
# removemos esses campos uma vez que não são utilizados em acessos baseados em ldap
user_form_remove = ['senha', 'senha2', ]
Problemas?
O suporte do MoinMoin não sabe qual é a configuração do seu servidor LDAP. Por favor, siga estes passos antes de pedir ajuda:
Utilize o ldap_verbose e procure no seu ficheiro log1.
- Verifique as suas definições e o seu utilizador/senha utilizando, por exemplo, o ldapsearch para fazer uma query no seu servidor LDAP.
Enquanto não conseguir falar com o seu servidor LDAP com uma ferramenta deste tipo, não precisa de tentar com o MoinMoin.
- Peça ajuda e definições correctas ao administrador do seu servidor LDAP/AD.
Tente fazer debug ou corrigir o seu problema no MoinMoin/auth/ldap_login.py.
Apenas peça ajuda ao suporte do MoinMoin se conseguir utilizar o ldapsearch (ou uma ferramenta semelhante) com sucesso e se tiver verificado várias vezes a configuração do seu wiki e ainda assim não funcionar com o moin.
este ficheiro está na directoria data do seu wiki (1)