Apache를 사용한 대소문자 구분 기본 인증

Apache를 사용한 대소문자 구분 기본 인증

Apache 서버를 허용하도록 구성할 수 있습니까?대소문자를 구분하지 않는 사용자 이름기본 인증을 위해?

현재 나는 내 프로그램에서 (포함된 파일에서) 이와 유사한 패턴을 사용하고 있습니다.httpd.conf

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

비밀번호는 여전히 대소문자를 구분해야 합니다.

답변1

같은 경우에 인증 파일 사용자 이름을 만들 수 있다고 가정해 보겠습니다. 대문자라고 가정 해 봅시다.

당신이 원하는 것을 달성하기 위해 나는 다음과 같이 할 것입니다.

  1. mod_rewrite를 다음과 함께 사용하세요.RewriteMapPython(또는 기타) 스크립트를 호출하는 것입니다.
  2. 스크립트에서
    1. base64는 인증 헤더를 디코딩합니다.
    2. 사용자 이름을 대문자로 만듭니다(열 앞 부분).
    3. base64는 인증 헤더를 인코딩합니다.
  3. 새로운 대문자 인증 헤더를 사용하세요

테스트할 설정은 없지만, 먼저 시작하실 수 있도록 아이디어를 구현하는 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

관련 정보