¿Es posible configurar un servidor Apache para aceptarnombres de usuario que no distinguen entre mayúsculas y minúsculaspara la autenticación básica?
Actualmente estoy usando un patrón similar a este (en un archivo incluido) en mihttpd.conf
<Location "/admin/">
AuthType Basic
AuthName "Admin Area"
AuthUserFile "/path/to/auth-file"
Require valid-user
</Location>
Las contraseñas aún deben distinguir entre mayúsculas y minúsculas.
Respuesta1
Supongamos que puede crear los nombres de usuario del archivo de autenticación en el mismo caso. Digamos que están en mayúsculas.
Para lograr lo que quieres yo haría:
- utilizar mod_rewrite con un
RewriteMap
eso llamaría a un script de Python (u otro) - en el guión,
- base64 decodifica el encabezado de autenticación
- poner el nombre de usuario en mayúscula (la parte antes de la columna)
- base64 codifica el encabezado de autenticación
- Utilice el nuevo encabezado de autenticación en mayúsculas
No tengo la configuración para probarlo, pero para darle una ventaja, aquí hay un script de Python que implementa la idea (énfasis en la claridad, podría ser más corto):
#!/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))
$ echo QWxhZGRpbjpvcGVuIHNlc2FtZQ== | openssl base64 -d
Aladdin:open sesame
El script pone el nombre de usuario en mayúsculas:
$ echo QWxhZGRpbjpvcGVuIHNlc2FtZQ== | python uppercase_basic.py
QUxBRERJTjpvcGVuIHNlc2FtZQ==
$ echo QUxBRERJTjpvcGVuIHNlc2FtZQ== | openssl base64 -d
ALADDIN:open sesame
Advertencia: este código fallará si tiene caracteres que no sean ASCII en el nombre de usuario. étudiant78
se convierte éTUDIANT78
en mi máquina.