Variável PHP & AUTH_DIGEST não presente ao usar o DigestAuth

0

Eu quero configurar Http Digest Authentication no meu servidor apache.

Por isso, ativei o módulo apache auth_digest e reiniciei meu servidor apache. Eu também adicionei o folowing ao meu VirtualHost :

<Directory "/var/www/example/web/htdocs">
    AuthType Digest
    Require valid-user
    AuthDigestProvider file


    Options Indexes FollowSymlinks MultiViews
    AllowOverride All
    Require all granted

 </Directory>

Depois, reiniciei meu servidor da Web.

De acordo com a documentação do PHP , agora devo ter um $_SERVER['PHP_AUTH_DIGEST']) , mas por algum motivo a chave PHP_AUTH_DIGEST não aparece na minha matriz $_SERVER .

Como eu poderia resolver isso?

A propósito: eu quero verificar a autorização no meu banco de dados não com um arquivo no servidor

    
por sanders 22.10.2015 / 15:18

1 resposta

2

Não é isso que a documentação diz.

Se você lida com a autenticação HTTP no servidor da Web (mod_auth_digest), ele consumirá os cabeçalhos de autenticação e reportará apenas o nome de usuário verificado (REMOTE_USER). Ele não os encaminhará para o PHP porque o resumo é inútil como já foi verificado pelo httpd.

Em vez disso, seu script PHP precisa enviar os cabeçalhos de solicitação de autenticação em si . Como no exemplo que você vinculou a si mesmo:

if (empty($_SERVER['PHP_AUTH_DIGEST'])) {
    header('HTTP/1.1 401 Unauthorized');
    header('WWW-Authenticate: Digest realm="'.$realm.
           '",qop="auth",nonce="'.uniqid().'",opaque="'.md5($realm).'"');

    die('Text to send if user hits Cancel button');
}

(Observe que uniqid () não deve ser usado aqui Em vez disso, crie o nonce usando OpenSSL .)

    
por 22.10.2015 / 15:37