การพิสูจน์ตัวตนพื้นฐานแบบไม่คำนึงถึงขนาดตัวพิมพ์ด้วย 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

ฉันคิดว่ามันเหมาะกับผู้ใช้ระดับสูงและลบหนึ่งตัวนั้นออกดังนั้น
James Webster

คำตอบ:


2

สมมติว่าคุณสามารถสร้างชื่อผู้ใช้ไฟล์รับรองความถูกต้องในกรณีเดียวกัน สมมติว่าพวกเขาเป็นตัวพิมพ์ใหญ่

เพื่อให้บรรลุสิ่งที่คุณต้องการฉันจะ:

  1. ใช้ mod_rewrite กับ RewriteMap ที่จะเรียกสคริปต์ไพ ธ อน (หรืออื่น ๆ )
  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

Caveat: รหัสนี้จะล้มเหลวหากคุณมีอักขระที่ไม่ใช่ ASCII ในชื่อผู้ใช้ étudiant78 กลายเป็น éTUDIANT78 บนเครื่องของฉัน


ขอบคุณสิ่งนี้ช่วย บิตที่สองฉันเข้าใจไม่มีปัญหามาจากพื้นหลังการเขียนโปรแกรม RewriteMap ขว้างฉันซักหน่อย แต่ลิงก์ของคุณกับ Google ช่วย =]
James Webster
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.