Autorização do Apache para os usuários permitidos? [fechadas]

0

Li a resposta para esta pergunta:

link

Isso me ajudou a entender como não autenticar alguns usuários (de acordo com o IP):

<Directory /var/www/files/>
    Order deny,allow
    Deny from all
    Allow from 192.168.1.2
    Satisfy Any
    AuthUserFile /etc/apache2/basic.pwd 
    AuthName "Please enter username and password" 
    AuthType Basic 
    Require valid-user 
</Directory>

Imagine que eu tenha esse banco de dados (diferente do banco de dados usado para autenticação):

User        IP 
Mark        192.168.1.2
Mike        192.168.1.3
Karl        192.168.1.4

1- posso permitir todos os endereços IP armazenados no banco de dados usando uma configuração no Apache?

2- outro problema é a autorização do IP permitido ser perdido, o Apache pode usar este banco de dados para autorização, se o usuário tiver permissão para obter as páginas sem autenticação?

Atualização:

para ser claro:

1- Não quero uma solução estática, quero que o Apache permita todos os IPs da tabela mencionada no banco de dados (o banco de dados está mudando dinamicamente).

2- Sabemos quando o Apache autentica usuários, ele conhece o nome do usuário das credenciais de autenticação, mas com o Allowing, o nome do usuário será perdido, eu quero que o Apache extraia o nome de usuário do IP permitindo a partir da mesma tabela extrai o endereço IP?

    
por Networker 20.07.2014 / 16:18

2 respostas

1

Você pode tentar a resposta sugerida aqui de usar mod_rewrite na lista negra de um arquivo:

## WHITELIST IPS ##
RewriteMap ipslist txt:/path/to/whitelist.txt
RewriteCond %{REMOTE_ADDR} ^(.*)$
RewriteCond ${ipslist:%1|black} ^black$ [NC]
RewriteRule (.*) - [F]

Você pode tentar usar algo dinâmico como mod_authn_dbd para selecionar o nome de usuário e a senha de um banco de dados:

# mod_dbd configuration
DBDriver pgsql
DBDParams "dbname=apacheauth user=apache password=xxxxxx"

DBDMin  4
DBDKeep 8
DBDMax  20
DBDExptime 300

<Directory /usr/www/myhost/private>
  # core authentication and mod_auth_basic configuration
  # for mod_authn_dbd
  AuthType Basic
  AuthName "My Server"
  AuthBasicProvider dbd

  # core authorization configuration
  Require valid-user

  # mod_authn_dbd SQL query to authenticate a user
  AuthDBDUserPWQuery \
    "SELECT password FROM authn WHERE user = %s"
</Directory>
    
por 22.07.2014 / 16:50
1

Em resposta a # 1, você pode ter quantos IPs forem permitidos como quiser ... exemplos:

Allow from 192.168.1.2
Allow from 192.168.1.3
Allow from 192.168.1.4

ou até mesmo

Allow from 192.168.1.2 192.168.1.3 192.168.1.4

e muitos outros, incluindo intervalos.

para o nº 2, desculpe, mas não estou entendendo o que você está perguntando, talvez um exemplo?

    
por 20.07.2014 / 19:32