##master-page:HelpTemplate
##master-date:Unknown-Date
#format wiki
#language pt
= 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 log<<FootNote(este ficheiro está na directoria data do seu wiki)>>.
 * 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.
