เรากำลังแปลงเว็บแอปพลิเคชันบางตัวที่เคยทำงานภายใต้การรับรองความถูกต้องของแบบฟอร์ม ให้ปัจจุบันทำงานเป็นการรับรองความถูกต้องของ Windows ฉันต้องการสร้างความปลอดภัยของเพจขึ้นมาใหม่ซึ่งมีการรับรองความถูกต้องของแบบฟอร์ม โดยมีการแก้ไขเพจจริงขั้นต่ำ ฉันสามารถสร้างเอฟเฟกต์ที่ต้องการขึ้นมาใหม่ได้ด้วยเว็บแอปที่เรียบง่าย ฉันกำลังเรียกใช้แอปบนไปป์ไลน์รวม Server 2008 R2 IIS 7.5
ฉันสร้างแอป 3 หน้าอย่างง่ายโดยใช้การรับรองความถูกต้องของ Windows สามหน้าคือ:
- Openpage.aspx ที่เปิดให้ผู้ใช้ที่ได้รับการรับรองความถูกต้องทุกคน
- Blockedpage.aspx ที่ถูกบล็อกสำหรับผู้ใช้ทั้งหมด (สัญลักษณ์ของไดเร็กทอรีหรือเพจที่จะถูกบล็อกไปยังกลุ่มย่อยของผู้ใช้ตามบทบาทของผู้ใช้)
- ErrorPage.aspx หากมีการเข้าถึง blockedpage.aspx (และถูกปฏิเสธ) แอปพลิเคชันควรส่งต่อไปยัง ErrorPage.aspx ซึ่งผู้ใช้จะได้รับข้อมูลทั่วไปเกี่ยวกับแอปพลิเคชัน
Web.Config สำหรับแอป:
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Windows"/>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
<location path="blockedpage.aspx">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
<system.webServer>
<httpErrors errorMode="Custom" >
<remove statusCode="401" subStatusCode="-1" />
<error statusCode="401" path="/development/simplesecurityapp/errorpage.aspx" responseMode="ExecuteURL" />
</httpErrors>
<validation validateIntegratedModeConfiguration="false" />
<defaultDocument>
<files>
<clear />
<add value="openpage.aspx" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
(หากฉันไม่พยายามเปลี่ยนเส้นทางข้อผิดพลาด 401 ในระดับ asp.net ฉันจะได้รับข้อความมาตรฐาน “ไม่ได้รับอนุญาต” ซึ่งไม่ใช่ผลกระทบที่ฉันต้องการให้กับผู้ใช้)
อย่างไรก็ตาม ฉันได้รับข้อผิดพลาดที่ฉันไม่เข้าใจ ทุกครั้งที่เซิร์ฟเวอร์รีเซ็ต แอปจะหยุดทำงาน IIS เพียงส่งคืนข้อผิดพลาด 401 จนกว่าเบราว์เซอร์จะแสดงการควบคุมการเข้าสู่ระบบด้วยตนเองซึ่งไม่สามารถตอบสนองได้ (ฉันไม่ต้องการให้ผู้ใช้ของฉันเห็นพรอมต์การลงชื่อเข้าใช้เบราว์เซอร์)
อย่างไรก็ตาม หากฉันแทนที่ส่วน httperrors เมื่อตั้งค่าแอปพลิเคชันแล้ว (โดยการแก้ไขการกำหนดค่าเว็บหรืออัปเดตด้วยเซิร์ฟเวอร์ GUI) ลบส่วนดังกล่าว เข้าถึงหน้า และจากนั้นเพิ่มส่วนกลับ แอปพลิเคชันจะเริ่มทำงาน ตามที่คาดไว้ และดำเนินต่อไปจนกว่าเซิร์ฟเวอร์จะรีบูต ซึ่งในเวลานั้นเซิร์ฟเวอร์จะเริ่มให้ป๊อปอัปการเข้าสู่ระบบด้วยตนเองแก่ผู้ใช้อีกครั้ง ซึ่งไม่สามารถแก้ไขได้
1) นี่เป็นวิธีที่ถูกต้องในการรักษาความปลอดภัยแอปด้วยการรับรองความถูกต้องของ Windows หรือไม่ (มีวิธีที่ดีกว่าในการกำหนดค่าไดเรกทอรีที่ไม่สามารถเข้าถึงได้เหมือนในรูปแบบ แต่ยังให้หน้าข้อผิดพลาดที่กำหนดเองหรือไม่)
2) นี่เป็นผลกระทบของไปป์ไลน์แบบรวมหรือไม่ และเหตุใดจึงทำงานในลักษณะนี้