Autenticação básica insensível a maiúsculas e minúsculas com o Apache

3

É possível configurar um servidor Apache para aceitar nomes de usuário insensíveis a maiúsculas e minúsculas para Autenticação Básica?

Atualmente estou usando um padrão semelhante a este (em um arquivo incluído) no meu httpd.conf

<Location "/admin/">
   AuthType Basic
   AuthName "Admin Area"
   AuthUserFile "/path/to/auth-file"
   Require valid-user
</Location>

As senhas ainda devem diferenciar maiúsculas e minúsculas.

    
por James Webster 28.05.2012 / 17:18

1 resposta

2

Vamos supor que você possa criar seus nomes de usuário do arquivo auth no mesmo caso. Vamos dizer que eles são maiúsculos.

Para conseguir o que você quer, eu faria:

  1. use o mod_rewrite com um RewriteMap que chamaria um python (ou outro ) script
  2. no script,
    1. base64 decodifica o cabeçalho de autenticação
    2. torna o nome do usuário em maiúsculas (a parte antes do colunma)
    3. base64 codifica o cabeçalho de autenticação
  3. Use o novo cabeçalho de autenticação em maiúsculas

Eu não tenho a configuração para testá-lo, mas para começar, aqui está um script Python que implementa a ideia (a ênfase na clareza pode ser menor):

#!/usr/bin/python

import base64
import sys
import string

#Get the header value
header = sys.stdin.readline()

#Base 64 decode it
authentication = base64.b64decode(header)

#Split username and password
userpass = authentication.split(':')

#Make username uppercase
userpass[0] = userpass[0].upper()

#Rebuild the authentication with the upper case username
authentication =  string.join(userpass,':')

#Send the base64 result back
print (base64.b64encode(authentication))

Para uma senha conhecida :

$ echo QWxhZGRpbjpvcGVuIHNlc2FtZQ== | openssl base64 -d
Aladdin:open sesame

O script torna o nome de usuário em maiúsculas:

$ echo QWxhZGRpbjpvcGVuIHNlc2FtZQ== | python uppercase_basic.py
QUxBRERJTjpvcGVuIHNlc2FtZQ==

$ echo QUxBRERJTjpvcGVuIHNlc2FtZQ== | openssl base64 -d
ALADDIN:open sesame

Ressalva: este código falhará se você tiver caracteres não ASCII no nome do usuário. étudiant78 torna-se éTUDIANT78 na minha máquina.

    
por 29.05.2012 / 04:37