Apache 서버를 허용하도록 구성할 수 있습니까?대소문자를 구분하지 않는 사용자 이름기본 인증을 위해?
현재 나는 내 프로그램에서 (포함된 파일에서) 이와 유사한 패턴을 사용하고 있습니다.httpd.conf
<Location "/admin/">
AuthType Basic
AuthName "Admin Area"
AuthUserFile "/path/to/auth-file"
Require valid-user
</Location>
비밀번호는 여전히 대소문자를 구분해야 합니다.
답변1
같은 경우에 인증 파일 사용자 이름을 만들 수 있다고 가정해 보겠습니다. 대문자라고 가정 해 봅시다.
당신이 원하는 것을 달성하기 위해 나는 다음과 같이 할 것입니다.
- 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