Como direcionar a autenticação básica do Apache via SSL?

1

Nossa intranet usa mod_ldap para autenticar usuários em nosso servidor interno do Active Directory da seguinte forma:

<Location /***/>
    AuthType Basic
    AuthName "***"
    AuthBasicProvider ldap
    AuthLDAPUrl "***"
    require valid-user
</Location>

Queremos permitir que nossos usuários acessem nosso site pela Internet, mas infelizmente a autenticação Básica é feita em texto sem formatação , o que exporia nossas credenciais do AD no site net.

Eu percebo que eu poderia proteger o site inteiro com SSL, mas a única coisa que realmente me preocupa são as credenciais em si.

Qual é a melhor maneira de proteger minhas credenciais do AD sem usar https: // para o site inteiro?

Nota: tentei substituir "Digest" por "Basic", mas isso não funciona.

    
por Brent 06.10.2010 / 16:22

4 respostas

2

Você nunca poderá usar a autenticação digest com o LDAP porque a autenticação digest digita (via MD5) a senha para que não possa ser comparada com a senha do ldap.

Você pode resolver esse problema usando cookies em vez de autenticação básica. Veja, por exemplo, pubcookie link ou Apache2 :: AuthCookie link

Realmente, porém, qual é o problema com o uso de SSL em todos os lugares? Você está desperdiçando esforço para remover a segurança.

    
por 06.10.2010 / 20:50
0

Eu respondi aqui link , uma solução que usa SSLRequireSSL , e ErrorDocument 403 retornando uma página de erro html 403 contendo um JavaScript que irá recarregar a página para HTTPS ... a melhor solução que eu encontrado sem dividir o arquivo de configuração em dois, um carregado pelo VirtualHost na porta HTTP, por outro na porta HTTPS.

    
por 19.10.2011 / 16:26
0

A resposta é que você não pode. Uma vez que o usuário autentique com autenticação básica, seu navegador enviará um cabeçalho de Autorização a cada solicitação subseqüente, contendo sua senha no estado claro (somente Codificação Base64). Portanto, a única maneira de proteger a senha é forçar o HTTPS em todo o site, pelo menos depois que eles forem autenticados.

    
por 23.05.2013 / 10:48
-1

Use uma regra de reconfiguração para direcionar todas as páginas autenticadas para https :. Isso acontecerá antes que a solicitação de autenticação aconteça. Também requer ssl para todas as páginas autenticadas.

EDITAR: Você pode usar regras de reconfiguração para forçar as solicitações http: https:. Isso acontece para todas as solicitações que correspondem ao padrão que você está correspondendo. Isso normalmente aconteceria antes da página exigir autenticação. Isso pode estar dentro de uma definição de local ou diretório. O restante do site estará em http, a menos que seja acessado usando https. As condições de reescrita são bastante flexíveis, pois o que é correspondido e o que é reescrito.

#   Force clients from the Internet to use HTTPS
RewriteEngine        on
RewriteCond          %{REMOTE_ADDR} !^192\.168\.1\.[0-9]+$
RewriteCond          %{HTTPS} !=on
RewriteRule          .* - [F]

No lado da segurança, você precisa de ssl. Como a autenticação de senha, isso aconteceria antes do acesso à página. Certifique-se de usar satisfazer todas as suas regras de segurança. Adicionar SSLRequireSSL para as condições das áreas autenticadas.

Mais detalhes são abordados pelo Apache SSL HowTo .

    
por 06.10.2010 / 17:16