Давайте предположим, что вы можете использовать свои имена пользователей для файла аутентификации в том же случае. Допустим, они прописные.
Чтобы получить то, что вы хотите, я бы:
- используйте mod_rewrite с
RewriteMap
, который вызовет скрипт на python (или другой)
- в сценарии,
- base64 декодирует заголовок аутентификации
- сделать имя пользователя заглавным (часть перед колонкой)
- base64 кодирует заголовок аутентификации
- Используйте новый заглавный заголовок аутентификации
У меня нет возможности протестировать его, но, чтобы дать вам преимущество, вот скрипт Python, который реализует эту идею (акцент в ясности, он может быть короче):
#!/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
Сценарий делает имя пользователя заглавными:
$ echo QWxhZGRpbjpvcGVuIHNlc2FtZQ== | python uppercase_basic.py
QUxBRERJTjpvcGVuIHNlc2FtZQ==
$ echo QUxBRERJTjpvcGVuIHNlc2FtZQ== | openssl base64 -d
ALADDIN:open sesame
Предостережение: этот код не будет работать, если у вас есть не-ascii символы в имени пользователя. étudiant78
становится éTUDIANT78
на моей машине.