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


3

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

현재 나는 이것에 포함 된 파일과 비슷한 패턴을 사용하고 있습니다. httpd.conf

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

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


여기와 SO에 같은 질문을 했습니까?
Denys Séguret

나는 슈퍼 사용자가 더 적합 생각 SO에 하나 삭제
제임스 웹스터

답변:


2

동일한 경우에 인증 파일 사용자 이름을 만들 수 있다고 가정합니다. 대문자라고 가정 해 봅시다.

당신이 원하는 것을 달성하기 위해 :

  1. RewriteMap파이썬 (또는 다른) 스크립트를 호출하는 mod_rewrite를 사용하십시오.
  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))

A에 대한 잘 알려진 비밀번호 :

$ 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내 컴퓨터에.


감사합니다. 도움이되었습니다. 두 번째 비트는 프로그래밍 배경에서 오는 문제가 없다는 것을 이해했습니다. RewriteMap이 조금 저를 던졌지 만 귀하의 링크와 Google이 도움이되었습니다.
James Webster
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.