Como dizer ao Apache para responder com 403 em vez de 401?

3

Temos algumas regras para uma subárvore de Location s, que envolvem Require -ing ldap-group e expr -s.

O usuário é devidamente desafiado a fornecer credenciais de login, que são verificadas.

No entanto, mesmo quando as credenciais estão corretas e o acesso é negado devido a outros motivos (como pertencer a um grupo errado ou provenientes de um endereço IP incorreto), a resposta do servidor é sempre 401 - em vez de 403.

Como resultado, os navegadores continuam solicitando que os usuários "tentem novamente" ... Posso dizer ao Apache (2.4) para usar 403, se as informações fornecidas na verificação de Authorization -header, e for algum outra regra, que rejeita o pedido?

Novamente, eu sei, por que , depois que a autenticação é bem-sucedida, a autorização é negada para alguns dos usuários - supõe-se para. Só preciso comunicar a esses usuários: "Sim, acreditamos que você é quem diz ser, mas não tem permissão para acessar esse local".

Aparentemente, o mod_rewrite é o único método para induzir uma resposta 403 - uma expressão mod_rewrite pode verificar a associação de um grupo LDAP ou forçar a mudança do status de 401 para 403?

Eu fiz esta pergunta no Site do WebMaster , mas não obteve respostas - as pessoas parecem mais conteúdo - orientadas.

Aqui está o meu trecho relevante da minha configuração atual:

<Location /foo>
         Require ldap-group CN=foo,OU=Groups,DC=example,DC=net
</Location>

Quando o nome de usuário / senha fornecidos são verificados, mas o requisito não é satisfeito, eu preciso retornar um 403 ... 401 está sendo retornado atualmente.

    
por Mikhail T. 01.02.2017 / 19:00

1 resposta

3

Acho que o que você quer é AuthzSendForbiddenOnFailure :

AuthzSendForbiddenOnFailure On

Context: directory, .htaccess

If authentication succeeds but authorization fails, Apache HTTPD will respond with an HTTP response code of '401 UNAUTHORIZED' by default. This usually causes browsers to display the password dialogue to the user again, which is not wanted in all situations. AuthzSendForbiddenOnFailure allows to change the response code to '403 FORBIDDEN'.

Observe que ele contém um aviso de segurança:

Security Warning

Modifying the response in case of missing authorization weakens the security of the password, because it reveals to a possible attacker, that his guessed password was right.

    
por 01.02.2017 / 19:08