คำสั่งที่จำเป็นคือ:
- การตรวจสอบสิทธิ์ขั้นพื้นฐาน - IF
การอนุญาต
อยู่ในส่วนหัว
- การตรวจสอบสิทธิ์ SAML
- สำหรับ 2 เฉพาะเจาะจง สถานที่ไม่มีสิทธิ์
นี่คือสิ่งที่ฉันมี แต่ดูเหมือนว่าจะทำงานไม่ถูกต้อง
<Location "/">
AuthType Basic
AuthBasicProvider ldap
...
<If "-z req('Authorization')">
AuthType Mellon
MellonEnable auth
MellonEndpointPath /mellon/
...
</If>
</Location>
<LocationMatch "^/(notifyCommit|shuttingDown)/">
AuthType None
Allow from all
Satisfy any
Require all granted
</LocationMatch>
อย่างไรก็ตาม เมื่อใดก็ตามที่ฉันพยายามเข้าถึงตำแหน่งใดตำแหน่งหนึ่งในสองตำแหน่งที่ไม่จำเป็นต้องมีการยืนยันตัวตน (แจ้งคอมมิตหรือปิดเครื่อง) ฉันจะได้รับ 401
ฉันทำอะไรผิดที่นี่? ฉันอยู่ภายใต้ความประทับใจที่ ที่ตั้ง
และ LocationMatch
ถูกรวมเข้าด้วยกันและเรียงลำดับจากบนลงล่างหากเป็นจริง ควรประเมิน "/" ก่อนและดูว่าจำเป็นต้องมีการรับรองความถูกต้อง แต่จากนั้นให้ค้นหาส่วนการจับคู่ตำแหน่ง และดูว่าไม่จำเป็นต้องใช้การรับรองความถูกต้องสำหรับ /notifyCommit/ หรือ /shuttingDown/
ฉันได้ถามคำถามที่เกี่ยวข้องสองสามข้อและลองใช้ตัวเลือกต่างๆ มากมาย แต่ดูเหมือนจะไม่มีผล รวมทั้งย้ายตำแหน่งที่ตรงกันก่อนส่วนตำแหน่ง และ SetEnvFf คำขอ_URI ...
.
แก้ไข
- สำหรับตำแหน่งที่ตั้งสองแห่งที่ไม่ต้องการการรับรองความถูกต้อง ไม่จำเป็นต้องมีชื่อผู้ใช้หรือรหัสผ่าน เป็นการเข้าถึงแบบไม่เปิดเผยตัวตน
- ดูเหมือนว่าส่วนเงื่อนไขการรับรองความถูกต้องของ SAML/Basic จะทำงานได้ดี