Como implementar autenticações LDAP sucessivas em um site Apache?

2

Eu tenho um pequeno site Apache que implementei com sucesso a autenticação básica do LDAP usando mod_authz_ldap. No entanto, estou com um problema ao tentar implementar dois níveis de autenticação sucessiva. Depois que um usuário válido é autenticado uma vez, ele nunca recebe uma solicitação de autenticação secundária, que deve ser necessária para uma parte específica do site. Ou seja, todos os usuários válidos podem fazer login, mas nunca são autenticados novamente quando apenas um subconjunto desses usuários deve acessar partes do site.

Por exemplo, exigi que todos que visitam example.com sejam autenticados como um usuário LDAP válido. Então eu tenho um repositório subversion em example.com/websvn que eu quero restringir apenas ao grupo 'development', um subconjunto dos usuários válidos.

Meu problema é que, depois que um usuário é autenticado com êxito como válido em example.com, quando ele acessa example.com/websvn, ele nunca é solicitado novamente para autenticação como usuário de "desenvolvimento". Isso acontece mesmo quando o usuário válido não está, de fato, no grupo de desenvolvimento. Posso testar a autenticação do repo conectando-me diretamente ao example.com/websvn, mas quando eu primeiro autentico em example.com e, em seguida, acesso a example.com/websvn, recebo acesso não importando o motivo e nunca solicito uma senha.

Como faço para implementar corretamente uma autenticação de dois estágios como essa? Eu quero que todos os usuários válidos acessem o site principal, mas somente usuários de desenvolvimento tenham acesso ao websvn. Portanto, os usuários válidos devem ser autenticados novamente para verificar se estão no grupo de desenvolvimento.

Obrigado!

    
por Mr. Shickadance 02.12.2011 / 15:28

2 respostas

1

A resposta de Scott me colocou no caminho certo. Originalmente, eu tinha algumas diretivas de autenticação duplicadas em arquivos diferentes, uma para o site principal e outras em configurações específicas de gitweb e websvn. Eu removi os bits de autenticação das configurações do gitweb e do websvn e movi todo o material de autenticação para o arquivo do site principal em .../apache2/sites-available/example :

<VirtualHost *:8080>
  DocumentRoot  /var/www
  ServerName    example.com

  <Location />
    AuthName "example"
        AuthType Basic
        AuthBasicProvider ldap
        AuthLDAPURL ldap://example.com/dc=example,dc=com?uid?sub
        AuthLDAPBindDN "cn=admin,dc=example,dc=com
        Include ldap_password.conf

        Require valid-user
  </Location>

  <Location /gitweb>
    Require ldap-group cn=git,ou=group,dc=example,dc=com
  </Location>

  <Location /websvn>
    Require ldap-group cn=subversion,ou=group,dc=example,dc=com
  </Location>
</VirtualHost>

Agora, com essa configuração, um usuário é solicitado a efetuar login ao acessar o site principal e, se estiver no grupo de desenvolvimento correto, poderá acessar os repositórios. Se não, eles são novamente solicitados para outro login.

    
por 02.12.2011 / 17:39
0

No httpd.conf:

<Location /websvn>
    Require group development
</Location>

Isso não solicitará novamente a autenticação se o usuário já estiver autenticado, apenas usará as credenciais existentes.

    
por 02.12.2011 / 16:20