ขออภัยล่วงหน้าหากคำถามนี้เหมาะสมกับไซต์ StackExchange อื่นมากกว่า นี่เป็นตัวเลือกแรกที่ดีที่สุด
พื้นหลัง
ฉันมีเว็บแอปพลิเคชัน (.NET Framework, ASP.NET Web Forms และ MVC) ที่ทำงานบน IIS (เวอร์ชันใดก็ได้) แอปพลิเคชันไม่มีตรรกะการตรวจสอบสิทธิ์ แทนที่จะใช้เฉพาะ IIS ที่กำหนดค่าสำหรับ Windows Authentication (Negotiate) จากนั้นแอปพลิเคชันจะอ้างอิง HttpContext.Current.User.Identity.Name เพื่อดึงข้อมูลผู้ใช้ Windows
ฉันได้รับมอบหมายให้เพิ่ม MFA ในขั้นตอนการเข้าสู่ระบบ แต่ฉันได้เผชิญกับสิ่งกีดขวางบนถนนหากเป็นไปได้ ด้านล่างนี้คือความเข้าใจในปัจจุบันของฉันและเหตุผลที่ฉันเชื่อว่าเป็นไปไม่ได้ คำถามของฉันคือฉันพลาดอะไรไปหรือเปล่า
เป้าหมาย:
- เมื่อผู้ใช้ปลายทางเชื่อมต่อกับแอปพลิเคชัน จำเป็นต้องมีการตรวจสอบการรับรองความถูกต้องด้วยปัจจัยที่สอง
- ไม่มีการเปลี่ยนแปลงระดับแอปพลิเคชัน
ความเข้าใจในปัจจุบัน:
- เมื่อใช้ Windows Authentication ผู้ใช้จะได้รับการรับรองความถูกต้องแล้ว และความท้าทายจาก IIS คือการรวมโทเค็นการรับรองความถูกต้องปัจจุบันพร้อมกับคำขอเท่านั้น
- IIS เคยมีตัวเลือกในการขัดจังหวะขั้นตอนนี้และเปลี่ยนเส้นทางไปยังความท้าทาย MFA ผ่านเซิร์ฟเวอร์ MFA ของ Microsoft แต่ตัวเลือกนี้ถูกยกเลิกและไม่สามารถใช้งานได้อีกต่อไป
- ขณะนี้ไม่มีตัวเลือกอื่นที่สามารถขัดจังหวะขั้นตอนการตรวจสอบความถูกต้องของ IIS
- ตัวเลือกที่เป็นไปได้ #1 - ปรับปรุงแอปพลิเคชันเพื่อรวมลอจิกการตรวจสอบสิทธิ์ (มีแนวโน้มมากที่สุดสำหรับการเชื่อมต่อ OAuth / OpenID) และเรียกใช้ความท้าทาย MFA ณ จุดนั้น
- ตัวเลือกที่เป็นไปได้ #2 - วางพร็อกซีแอปพลิเคชันระหว่างผู้ใช้ปลายทางและแอปพลิเคชัน พร็อกซีของแอปจะต้องมีการเข้าสู่ระบบบวกกับ MFA จากนั้นจึงเปลี่ยนเส้นทางไปยังแอปพลิเคชัน
ฉันอยู่ในจุดที่ฉันรู้พอที่จะรู้ว่าฉันไม่รู้เพียงพอ แต่ฉันยังขาดสิ่งที่ต้องทำความเข้าใจเพิ่มเติมเพื่อขุดลึกลงไปอีก
ความเข้าใจของฉันเกี่ยวกับการรับรองความถูกต้องของ Windows และตัวเลือกที่มีเพื่อให้บรรลุ MFA ถูกต้องหรือไม่ หรือมีสิ่งใดที่ฉันขาดหายไปซึ่งจะช่วยให้ฉันก้าวไปข้างหน้าได้