รับพร้อมท์การเข้าสู่ระบบโดยใช้การรับรองความถูกต้องของ windows ในตัว


108

ฉันมีแอปพลิเคชัน. NET 3.5 ที่ทำงานภายใต้ IIS 7 บนเซิร์ฟเวอร์ Windows 2003 และไม่สามารถรับการรับรองความถูกต้องของ Windows แบบรวมที่ทำงานได้อย่างถูกต้องเนื่องจากฉันยังคงได้รับแจ้งให้ลงชื่อเข้าใช้ ฉันได้ตั้งค่าการรับรองความถูกต้องของ Windows ให้เปิดใช้งานใน IIS โดยปิดใช้งานประเภทความปลอดภัยอื่น ๆ ทั้งหมดและการตรวจสอบสิทธิ์ / การอนุญาตไฟล์ web.config ของฉันถูกตั้งค่าเป็น:

<system.web>
    <compilation debug="true" strict="false" explicit="true" targetFramework="3.5" />
    <authenticationmode="Windows"/>
    <authorization>
    <deny users = "?" />
    </authorization>
</system.web>

ด้วยการตั้งค่านี้ฉันคาดหวังว่าเบื้องหลังการตรวจสอบฉากของผู้ใช้ Windows จะอนุญาตให้เข้าถึงและปฏิเสธผู้ใช้ที่ไม่ระบุชื่อ อย่างไรก็ตามสิ่งที่ฉันได้รับคือป๊อปอัปการเข้าสู่ระบบ Windows เมื่อฉันพยายามเข้าถึงไซต์

ฉันได้รับการแก้ไขปัญหานี้มาสองสามวันแล้วและไม่สามารถหาปัญหาได้ จากโพสต์ที่มีปัญหาคล้ายกันฉันยืนยันว่า URL ของฉันไม่มีช่วงเวลาใด ๆ ตรวจสอบอีกครั้งว่าการตั้งค่า IE ของฉันถูกตั้งค่าเป็นเปิดใช้งานการตรวจสอบสิทธิ์ Windows แบบรวมและเพิ่ม URL ของฉันไปยังไซต์อินทราเน็ตของฉัน แต่ยังคงได้รับป๊อปอัป

เพื่อแก้ไขปัญหาเพิ่มเติมฉันเปิดใช้งาน Anonymous Authentication ใน IIS และแก้ไขไฟล์ web.config ของฉันซึ่งช่วยให้ฉันสามารถเข้ามาได้ทันทีจากนั้นเพิ่ม Response.Write (System.Security.Principal.WindowsIdentifity.getcurrent (). user.name.toString () ) เพื่อพยายามดูว่าผู้ใช้ใดถูกใช้ในการพิสูจน์ตัวตน ผลลัพธ์ที่ได้คือ IIS APPPOOL \ myapp ซึ่งเห็นได้ชัดว่าเป็นกลุ่มแอปพลิเคชัน IIS สำหรับแอปพลิเคชันของฉัน

ฉันขอขอบคุณสำหรับความช่วยเหลือที่ทุกคนสามารถให้ได้ดังนั้นฉันยังคงใช้เฉพาะการรับรองความถูกต้องของ windows แต่ไม่ได้รับป๊อปอัปและการตรวจสอบสิทธิ์ windows จะดำเนินการกับผู้ใช้ Windows จริง

ขอบคุณ.


หมายเหตุเพิ่มเติมหลังการแก้ไขปัญหาเพิ่มเติม:

เพิ่งสังเกตว่าเมื่อการเข้าสู่ระบบล้มเหลวและพรอมต์การเข้าสู่ระบบ Windows ปรากฏขึ้นอีกครั้งแสดงชื่อผู้ใช้ที่พยายามเข้าสู่ระบบเป็น "SERVERNAME" \ "USERNAME" ซึ่งทำให้ฉันเชื่อว่ากำลังพยายามตรวจสอบผู้ใช้กับเซิร์ฟเวอร์เทียบกับ โดเมน. เพื่อยืนยันสิ่งนี้ฉันได้สร้างบัญชีผู้ใช้ภายในโดยตรงบนเซิร์ฟเวอร์แอปโดยใช้ชื่อผู้ใช้และรหัสผ่านเดียวกันกับผู้ใช้โดเมนเครือข่ายและพยายามเข้าสู่ระบบอีกครั้ง ผลที่ได้คือฉันได้รับข้อความแจ้งการเข้าสู่ระบบอีกครั้ง แต่เมื่อฉันป้อนชื่อผู้ใช้และรหัสผ่านในครั้งนี้ฉันสามารถเข้าสู่ระบบได้สำเร็จ ผู้ใช้เครือข่ายและเซิร์ฟเวอร์แอปอยู่ในโดเมนเดียวกันดังนั้นจึงไม่แน่ใจว่าเหตุใดการตรวจสอบสิทธิ์ IIS จึงชี้ไปที่บัญชีเซิร์ฟเวอร์แอปภายในเครื่องไม่ใช่ไปยังบัญชีโดเมน ฉันรู้ว่านี่เป็นคำถาม IIS ณ จุดนี้จึงโพสต์ใน forums.iis


4
ควรมีช่องว่างระหว่างการรับรองความถูกต้องและโหมดเช่นนี้<authentication mode="Windows" />หวังว่าจะเป็นเพียงการพิมพ์ผิดในคำถามของคุณ?
Sean Hanley

3
คุณกำลังรัน iis 7 บนเซิร์ฟเวอร์ 2003 คุณแน่ใจหรือไม่ว่าฉันเกือบจะเป็นไปได้แล้ว
Anicho

คำตอบ:


86

ฉันมีเซิร์ฟเวอร์ Windows 2008 ที่ฉันกำลังทำงานอยู่ดังนั้นคำตอบของฉันจึงไม่เหมือนกับสิ่งที่ OP มีในเซิร์ฟเวอร์ Windows 2003

นี่คือสิ่งที่ฉันทำ (บันทึกที่นี่เพื่อที่ฉันจะได้พบในภายหลัง)

ฉันมีปัญหาเดียวกันนี้:

พร้อมต์เข้าสู่ระบบ

ในไฟล์Web.configของฉันฉันมีส่วนนี้:

<system.web>
    <authentication mode="Windows" />
    <authorization>
        <allow users="*" />
        <deny users="?" />
    </authorization>
</system.web>

ภายใต้ IIS สิ่งเหล่านี้ดูเหมือนจะได้รับการแก้ไขภายใต้ไอคอนการรับรองความถูกต้อง

  1. แก้ไขสิทธิ์: ตรวจสอบว่าบัญชี ASP.NET ของคุณมีสิทธิ์ ฉันไม่ได้ถูกเพิ่มในตอนแรก

การอนุญาต ASP.NET

ตอนนี้เข้าสู่คุณสมบัติของการรับรองความถูกต้อง :

คุณสมบัติการรับรองความถูกต้อง

เปิดใช้งานการรับรองความถูกต้องแบบไม่ระบุชื่อด้วยIUSR:

การรับรองความถูกต้องโดยไม่ระบุชื่อ

เปิดใช้งานการรับรองความถูกต้องของ Windowsจากนั้นคลิกขวาเพื่อตั้งค่าผู้ให้บริการผู้ให้บริการ

NTLM ต้องเป็นคนแรก!

การรับรองความถูกต้องของ Windows

จากนั้นตรวจสอบว่าภายใต้การตั้งค่าขั้นสูง ...การป้องกันแบบขยายได้รับการยอมรับและเปิดใช้งานการรับรองความถูกต้องในโหมดเคอร์เนลถูกตรวจสอบ :

ตั้งค่าขั้นสูง

เมื่อได้สิ่งนี้แล้วฉันก็กลับไปที่เว็บแอปพลิเคชันของฉันคลิกลิงก์เรียกดูและเข้าสู่ระบบโดยไม่ต้องให้ข้อมูลรับรองอีกครั้ง

ฉันหวังว่านี่จะเป็นประโยชน์ต่อพวกคุณหลาย ๆ คนและฉันหวังว่ามันจะเป็นประโยชน์สำหรับฉันในภายหลังเช่นกัน


1
ขอบคุณ Sujay ฉันสังเกตเห็นเทคนิคเหล่านี้ส่วนใหญ่ใน SO ไม่มีภาพเพื่อแสดงสิ่งที่พวกเขากำลังพูดถึงดังนั้นฉันจึงต้องการแสดงขั้นตอนทั้งหมดที่ฉันใช้ หากสิ่งนี้ไม่ได้ผลสำหรับใครบางคนอย่างน้อยพวกเขาก็สามารถเห็นขั้นตอนทั้งหมดที่ทำและตัวเลือกอื่น ๆ ที่ควรลอง
jp2code

1
นี่มันวิเศษมากที่ฉันแทบจะบ้าตายเพราะเรื่องนี้ และภาพทำให้ง่ายขึ้นมาก ขอบคุณ !!
KratosMafia

1
มันก็ใช้ได้ผลสำหรับฉันเช่นกัน แต่ฉันต้องรีสตาร์ทอินสแตนซ์ Windows 2008 r2 ในตอนท้าย ฉันคิดว่าการพูดถึงมันอาจเป็นเรื่องสำคัญ
Aleksei Mialkin

6
ไม่ทำงานสำหรับ Windows Server 2012 ที่รัน IIS 8.5
Minh Nguyen

3
สิ่งนี้ไม่เพียงเปิดใช้งานการรับรองความถูกต้องแบบไม่ระบุตัวตนซึ่งทำให้การรับรองความถูกต้องของ windows ถูกละเว้นหรือไม่? คำถามที่แท้จริงนี่คือสิ่งที่ปรากฏให้ฉันเห็นข้างต้น
Paul Hodgson

50

เพียงเพื่อประโยชน์ของผู้อื่น. หากข้อผิดพลาดคือ a 401.1 Unauthorizedและรหัสข้อผิดพลาดของคุณตรงกันแสดง0xc000006dว่าคุณกำลังพบกับ "คุณลักษณะ" ความปลอดภัยที่บล็อกคำขอไปยัง FQDN หรือส่วนหัวของโฮสต์ที่กำหนดเองซึ่งไม่ตรงกับชื่อเครื่องในเครื่องของคุณ:

ทำตามบทความสนับสนุนนี้เพื่อแก้ไขปัญหา:

https://webconnection.west-wind.com/docs/_4gi0ql5jb.htm (เดิมตอนนี้เลิกใช้แล้ว: http://support.microsoft.com/kb/896861 )

จากบทความสนับสนุนเพื่อให้แน่ใจว่าจะไม่สูญหาย:

วิธีแก้ปัญหาคือแฮ็กรีจิสทรีที่ปิดใช้งานนโยบายนี้อย่างชัดเจน

หากต้องการดำเนินการกำหนดค่านี้ด้วยตนเองให้ค้นหาคีย์นี้ในรีจิสทรีบนเซิร์ฟเวอร์:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

และแก้ไขหรือเพิ่มคีย์ใหม่:

DisableLoopbackCheck (DWORD)

จากนั้นส่งค่าไปที่ 1 เพื่อปิดใช้งานการตรวจสอบย้อนกลับ (การตรวจสอบความถูกต้องภายในใช้งานได้) หรือเป็น 0 (ไม่อนุญาตให้ตรวจสอบความถูกต้องภายในเครื่อง)

หรือง่ายกว่านั้นคุณสามารถใช้ Powershell:

New-ItemProperty HKLM:\System\CurrentControlSet\Control\Lsa -Name "DisableLoopbackCheck" -Value "1" -PropertyType dword

ดูเหมือนว่ารุ่นล่าสุดของ Windows 10 (1803 และใหม่กว่า?) ต้องการการตั้งค่าการกำหนดค่านี้เพื่อตรวจสอบความถูกต้องภายในเครื่อง

อันนี้ใช้เวลาสักพักเพราะความคิดเห็นของคนอื่นที่นี่ไม่สามารถช่วยฉันได้ ฉันพบบทความนี้และได้รับการแก้ไขแล้ว!


3
คุณคือฮีโร่ f * g ของฉัน! ฉันผ่าน "วิธีแก้ปัญหา" มากมายเพื่อไปสู่สิ่งนี้ ขอบคุณ!
น้ำค้าง

1
วัวศักดิ์สิทธิ์! สองวันที่พยายามทำให้สิ่งนี้ใช้งานได้และในที่สุดคุณก็ให้คำตอบฉัน! ขอบคุณ!
BernieSF

1
หลังจากผ่านคำตอบหลาย ๆ คำตอบและเห็นว่าการกำหนดค่านั้นเหมือนกับของฉันนี่คือคำตอบ!
Sietse

1
คุณตำนาน! สิ่งนี้ได้ผลสำหรับฉัน ฉันใช้เวลานานในการค้นหาสิ่งนี้
Andy Vennells

2
@PTD อัปเดตด้วยบทความใหม่และเพิ่มบทสรุปสำหรับรุ่นหลังเพื่อไม่ให้สูญหาย มากสำหรับ MS สนับสนุน permalinks!
kamranicus

26

ฉันมีปัญหาที่คล้ายกันโดยที่ฉันต้องการปกป้องเฉพาะบางส่วนของเว็บไซต์ของฉัน ทุกอย่างทำงานได้ดียกเว้นใน IE ฉันเปิดใช้งานทั้ง Anonymous และ Windows Authentication สำหรับ Anonymous Identity ถูกตั้งค่าเป็น Application Pool identity ปัญหาเกิดจากการรับรองความถูกต้องของ Windows หลังจากขุดไปรอบ ๆ ฉันก็ยิงนักเล่นซอขึ้นมาและพบว่ามันใช้ Kerberos เป็นผู้ให้บริการ (จริงๆแล้วมันถูกตั้งค่าเป็น Negotiate ตามค่าเริ่มต้น) ฉันเปลี่ยนเป็น NTLM และแก้ไขได้ HTH

Daudi


1
เสร็จแล้วสำหรับฉันขอบคุณ! ฉันสามารถรับผู้ใช้ Windows เมื่อเข้าถึงภายในเครื่อง แต่คำขอข้อมูลรับรองจะปรากฏขึ้นจากเครื่องอื่นในโดเมน
JSancho

1
@Daudi คุณตั้งค่าตัวตนต่อวิธีการพิสูจน์ตัวตนได้อย่างไร?
Rob Bell

18

เพิ่มสิทธิ์ [ผู้ใช้โดเมน] ในการรักษาความปลอดภัยเว็บของคุณ

  • คลิกขวาที่ไซต์ของคุณใน IIS ภายใต้โฟลเดอร์ Sites
  • คลิกแก้ไขสิทธิ์ ...
  • เลือกแท็บความปลอดภัย
  • ภายใต้ส่วนกลุ่มหรือชื่อผู้ใช้ให้คลิกปุ่มแก้ไข ...
  • ในการอนุญาตป๊อปอัปภายใต้ชื่อกลุ่มหรือผู้ใช้คลิกเพิ่ม ...
  • ป้อน [ผู้ใช้โดเมน] ในชื่อวัตถุเพื่อเลือกพื้นที่ข้อความและคลิกตกลงเพื่อใช้การเปลี่ยนแปลง
  • คลิกตกลงเพื่อปิดป๊อปอัปการอนุญาต
  • คลิกตกลงเพื่อปิดหน้าต่างแสดงคุณสมบัติและใช้การตั้งค่าใหม่ของคุณ

10
ขั้นตอนในการดำเนินการนี้จะเป็นประโยชน์
Drew Chapin

2
+1. คุณช่วยวันของฉันและสติของฉัน ชื่นชมมาก!
stakx - ไม่ร่วมให้ข้อมูลใน

11

อย่าสร้างข้อผิดพลาดบนเซิร์ฟเวอร์ของคุณโดยการเปลี่ยนแปลงทุกอย่าง หากคุณมีหน้าต่างแจ้งให้เข้าสู่ระบบเมื่อใช้ Windows Authentication บน 2008 R2 ให้ไปที่Providersและย้ายขึ้นNTLMสำหรับแต่ละแอปพลิเคชันของคุณ เมื่อNegotiateใดเป็นรายการแรกในรายการ Windows Authentication สามารถหยุดใช้งานคุณสมบัติสำหรับแอปพลิเคชันเฉพาะบน 2008 R2 และคุณจะได้รับแจ้งให้ป้อนชื่อผู้ใช้และรหัสผ่านโดยไม่ต้องทำงาน บางครั้งอาจเกิดขึ้นเมื่อคุณทำการอัปเดตแอปพลิเคชันของคุณ เพียงตรวจสอบให้แน่ใจว่าNTLMเป็นอันดับแรกในรายการและคุณจะไม่พบปัญหานี้อีก


1
สิ่งนี้แก้ไขให้ฉัน
Bigwave

9
เว้นแต่คุณจะไม่ต้องการ NTLM ก่อนในรายการของคุณ ... ผลที่ตามมาจากการดำเนินการนี้ทุกคนที่ทำการเปลี่ยนแปลงดังกล่าวควรเข้าใจความแตกต่างระหว่าง NTLM และ Negotiate (ในระดับพื้นฐานที่สุดการเจรจาครั้งแรกพยายามตรวจสอบสิทธิ์ Kerberos และล้มลง กลับไปที่ NTLM หากล้มเหลว) หากคุณต้องการ Kerberos (และหลายคนทำ) นี่ไม่ใช่ทางออกที่ดี รายละเอียดบางส่วนที่นี่: msdn.microsoft.com/en-us/library/aa480475.aspx
TCC

8

หาก URL ของคุณมีจุดในชื่อโดเมน IE จะปฏิบัติเหมือนเป็นที่อยู่อินเทอร์เน็ตไม่ใช่ในเครื่อง คุณมีอย่างน้อยสองตัวเลือก:

  1. รับนามแฝงเพื่อใช้ใน URL เพื่อแทนที่ server.domain ตัวอย่างเช่น myapp
  2. ทำตามขั้นตอนด้านล่างบนคอมพิวเตอร์ของคุณ

ไปที่ไซต์และยกเลิกกล่องโต้ตอบการเข้าสู่ระบบ ให้สิ่งนี้เกิดขึ้น:

ใส่คำอธิบายภาพที่นี่

ในการตั้งค่าของ IE:

ใส่คำอธิบายภาพที่นี่

ใส่คำอธิบายภาพที่นี่

ใส่คำอธิบายภาพที่นี่


1
เรากำลังใช้ Windows Server 2012 และนี่เป็นโซลูชันเดียวที่เหมาะกับเรา ขอบคุณมาก!
ashilon

5

WindowsIdentity.GetCurrentถูกต้อง: คุณควรได้รับผู้ใช้ APPPOOL เนื่องจากกระบวนการ ASP.NET ซึ่งเรียกใช้รหัสของคุณเป็นข้อมูลประจำตัวปัจจุบัน หากคุณต้องการส่งคืนผู้ใช้ที่กดปุ่มระบุตัวตนของไซต์คุณจะต้องเพิ่มบรรทัดต่อไปนี้ใน web.config ของคุณ:

<identity impersonate="true" />

ทำให้กระบวนการถือว่าข้อมูลประจำตัวของผู้ใช้ที่ร้องขอเพจ การดำเนินการทั้งหมดจะดำเนินการในนามของพวกเขาดังนั้นการพยายามอ่านโฟลเดอร์ในเครือข่ายหรือเข้าถึงทรัพยากรฐานข้อมูลและสิ่งที่คล้ายกันจะหมายความว่าผู้ใช้ปัจจุบันจะต้องมีสิทธิ์ในสิ่งเหล่านั้น คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการเลียนแบบที่นี่ โปรดทราบว่าขึ้นอยู่กับวิธีการตั้งค่าโทโพโลยีเซิร์ฟเวอร์บนเว็บ / ฐานข้อมูลของคุณคุณอาจพบปัญหาการมอบสิทธิ์เมื่อเปิดใช้งาน

แต่ปัญหาเดิมของคุณคือดูเหมือนว่าไม่สามารถระบุตัวตนได้และคุณกำลังได้รับป๊อปอัปการเข้าสู่ระบบ ฉันจะทราบว่าคุณไม่จำเป็นต้อง<deny>ปิดกั้นหากคุณได้ปิดใช้งานการรับรองความถูกต้องแบบไม่ระบุตัวตนใน IIS เราไม่เคยรวมไว้ (ยกเว้นใน<location>บล็อคพิเศษและอื่น ๆ ) ดังนั้นฉันจะบอกว่าคุณอาจลองลบออกแล้วลองอีกครั้ง ทุกอย่างฟังดูถูกต้อง

คุณไม่ได้ระบุว่าผู้ใช้รายใดกำลังเรียกใช้พูลแอปพลิเคชันใน IIS เป็นบัญชีที่กำหนดเองหรือเป็นบัญชีเริ่มต้น? ถ้าเป็นแบบกำหนดเองมันเป็นบัญชีโดเมนหรือบัญชีภายในบนเว็บเซิร์ฟเวอร์? บางครั้งบัญชีที่กำหนดเองอาจต้องใช้ขั้นตอนเพิ่มเติมเล็กน้อยเช่นการลงทะเบียน SPN นอกจากนี้อาจเป็นปัญหากับบัญชีที่กำหนดเองที่ไม่มีสิทธิ์ใน AD สำหรับการแก้ไขบัญชีของผู้ใช้ที่เข้ามา

คุณอาจตรวจสอบบันทึก IIS เพื่อดูว่ามีการตอบกลับอะไรบ้าง โดยมากจะเป็น 401 แต่ควรมีเลขย่อยตามหลังเช่น 401.2 หรืออะไรสักอย่าง บางครั้งตัวเลขย่อยนั้นสามารถช่วยระบุปัญหาที่แท้จริงได้ นี้บทความ KBรายการห้า


+1 สำหรับการกล่าวถึงข้อกำหนดของ SPN อันที่จริงปัญหาส่วนใหญ่ที่ฉันประสบกับป๊อปอัปการเข้าสู่ระบบเกิดจาก SPN ที่ขาดหายไปในสภาพแวดล้อม Kerberos
SBS

5

สิ่งนี้แก้ไขให้ฉัน

เซิร์ฟเวอร์และไคลเอนต์ของฉันคือ Windows 7 และอยู่ในโดเมนเดียวกัน

  1. ใน iis7.5- เปิดใช้งานการรับรองความถูกต้องของ windows สำหรับอินทราเน็ตของคุณ (ปิดการใช้งานการรับรองความถูกต้องอื่น ๆ ทั้งหมด .. ยังไม่จำเป็นต้องพูดถึงการรับรองความถูกต้องของ windows ในไฟล์ web.config

  2. จากนั้นไปที่ Client PC .. IE8 หรือ 9- Tools-internet Options-Security-Local Intranet-Sites-advanced - เพิ่มไซต์ของคุณ (ถอด "ต้องใช้เซิร์ฟเวอร์ verfi ... " ticketmark..no need

  3. IE8 หรือ 9- Tools-internet Options-Security-Local Intranet-Custom level-userauthentication-logon-select เข้าสู่ระบบอัตโนมัติด้วยชื่อผู้ใช้และรหัสผ่านปัจจุบัน

  4. บันทึกการตั้งค่านี้.. เสร็จแล้ว .. ไม่ต้องแจ้งชื่อผู้ใช้และรหัสผ่านอีกต่อไป

  5. ตรวจสอบให้แน่ใจว่าเนื่องจากพีซีไคลเอนต์ของคุณเป็นส่วนหนึ่งของโดเมนคุณต้องมี GPO สำหรับการตั้งค่านี้ .. หรือการตั้งค่านี้จะเปลี่ยนกลับเมื่อผู้ใช้เข้าสู่ระบบ windows ในครั้งต่อไป


2
สำหรับ 1) ฉันเปิดใช้งานการเลียนแบบและการรับรองความถูกต้องของ Windows จริง ๆ แล้วและทุกอย่างก็เรียบร้อยดี กุญแจสำคัญสำหรับฉันคือ 2) ที่คุณเพิ่มที่อยู่ไซต์ระยะไกลไปยังโซนอินทราเน็ตเฉพาะที่
SideFX

4

สามารถเกี่ยวข้องกับเบราว์เซอร์ หากคุณใช้ IE คุณสามารถไปที่การตั้งค่าขั้นสูงและทำเครื่องหมายที่ช่องทำเครื่องหมาย "เปิดใช้งาน Windows Integrated Authentication"


4

ในกรณีของฉันการตั้งค่าการอนุญาตไม่ได้รับการตั้งค่าอย่างถูกต้อง

ฉันต้อง

  1. เปิด. NET กฎการอนุญาตในตัวจัดการ IIS

    เปิด. NET กฎการอนุญาตในตัวจัดการ IIS
  2. และลบกฎการปฏิเสธ

    ลบกฎการปฏิเสธ

3

ในอินทราเน็ตของเราปัญหาได้รับการแก้ไขในฝั่งไคลเอ็นต์โดยปรับแต่งการตั้งค่าในการรักษาความปลอดภัยดังที่แสดงไว้ที่นี่ ช่องทำเครื่องหมายใดช่องหนึ่งทางด้านขวาใช้ได้ผลกับเรา

ตัวเลือกอินเทอร์เน็ต IE


2

ฉันเพิ่งแก้ไขปัญหาที่คล้ายกันกับแอปพลิเคชัน ASP.Net

อาการ: ฉันสามารถเข้าสู่ระบบแอปของฉันโดยใช้ผู้ใช้ภายในเครื่อง แต่ไม่ใช่ผู้ใช้โดเมนแม้ว่าเครื่องจะเชื่อมต่อกับโดเมนอย่างถูกต้อง (ตามที่คุณกล่าวไว้ในหมายเหตุเพิ่มเติม) ในโปรแกรมดูเหตุการณ์ความปลอดภัยมีเหตุการณ์ที่มี ID = 4625 "Domain sid inconsistent"

การแก้ไข: ผมพบว่าวิธีการแก้ปัญหาที่นี่ ปัญหาคือเครื่องทดสอบของฉันที่โคลนเครื่องเสมือน (Windows Server 2008 R2 ตัวควบคุมโดเมนหนึ่งตัวและเว็บเซิร์ฟเวอร์หนึ่งเครื่อง) ทั้งสองมี SID ของเครื่องเดียวกันซึ่งทำให้เกิดปัญหาอย่างเห็นได้ชัด นี่คือสิ่งที่ฉันทำ:

  1. ลบเว็บเซิร์ฟเวอร์ออกจากโดเมน
  2. เรียกใช้ c: \ Windows \ System32 \ Sysprep \ Sysprep.exe ใน VM
  3. รีบูต VM
  4. เข้าร่วมเว็บเซิร์ฟเวอร์กับโดเมน

คุณสูญเสียการตั้งค่าบางอย่างในกระบวนการ (ค่ากำหนดของผู้ใช้, IP แบบคงที่, สร้างใบรับรองที่ลงนามด้วยตนเองใหม่) แต่ตอนนี้ฉันได้สร้างขึ้นใหม่แล้วทุกอย่างทำงานได้อย่างถูกต้อง


การโคลนจะดูดเมื่อคุณพยายามตั้งค่าการมอบหมายที่มีข้อ จำกัด
SideFX

2

ฉันก็มีปัญหาเดียวกัน ลองสิ่งต่างๆส่วนใหญ่ที่พบในฟอรัมนี้และฟอรัมอื่น ๆ

ในที่สุดก็ประสบความสำเร็จหลังจากทำ RnD ของตัวเองเล็กน้อย

ฉันเข้าไปที่การตั้งค่า IISจากนั้นในตัวเลือกการอนุญาตเว็บไซต์ของฉันได้เพิ่มกลุ่มผู้ใช้โดเมนองค์กรของฉัน

ขณะนี้เนื่องจากผู้ใช้โดเมนทั้งหมดของฉันได้รับอนุญาตให้เข้าถึงเว็บไซต์นั้นฉันไม่พบปัญหานั้น

หวังว่านี่จะช่วยได้


4
คุณกำลังพูดถึงตัวเลือกการอนุญาตใดบ้าง คุณสามารถระบุขั้นตอนโดยละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่คุณทำได้หรือไม่?
Drew Chapin

1

คุณได้ลองเข้าสู่ระบบด้วยคำนำหน้าโดเมนของคุณหรือไม่เช่น DOMAIN \ Username ค่าเริ่มต้นของ IIS 6 คือการใช้โฮสต์คอมพิวเตอร์เป็นโดเมนเริ่มต้นดังนั้นการระบุโดเมนเมื่อเข้าสู่ระบบอาจช่วยแก้ปัญหาได้


1

ฉันลองใช้เทคนิคการกำหนดค่า IIS ข้างต้นและแฮ็กรีจิสทรีย้อนกลับและฉันได้ตรวจสอบและสร้างการอนุญาตพูลแอปใหม่และสิ่งอื่น ๆ อีกนับสิบและยังไม่สามารถกำจัดลูปการตรวจสอบสิทธิ์ที่ทำงานบนเวิร์กสเตชันการพัฒนาของฉันด้วย IIS Express หรือ IIS 7.5 จากเซสชันการเรียกดูภายในหรือระยะไกล ฉันได้รับการตอบกลับสถานะ 401.2 สี่ครั้งและหน้าว่างเปล่า ไซต์เดียวกันที่ปรับใช้กับเซิร์ฟเวอร์การจัดเตรียม IIS 8.5 ของฉันทำงานได้อย่างไม่มีที่ติ

ในที่สุดฉันสังเกตเห็นมาร์กอัปใน Response Body ที่เบราว์เซอร์แสดงผลว่างเปล่ามีเพจเริ่มต้นสำหรับการเข้าสู่ระบบที่ประสบความสำเร็จฉันพิจารณาแล้วว่าการจัดการข้อผิดพลาดแบบกำหนดเองสำหรับ ASP.NET และ HTTP สำหรับข้อผิดพลาด 401 กำลังป้องกัน / ขัดขวางการรับรองความถูกต้องของ Windows เวิร์กสเตชันของฉัน แต่ไม่ใช่เซิร์ฟเวอร์การจัดเตรียม ฉันใช้เวลาหลายชั่วโมงในการเล่นซอกับสิ่งนี้ แต่ทันทีที่ฉันลบการจัดการแบบกำหนดเองสำหรับข้อผิดพลาด 401 เวิร์กสเตชันก็กลับมาเป็นปกติ ขอนำเสนอนี่เป็นอีกวิธีหนึ่งในการถ่ายภาพด้วยเท้าของคุณเอง


0

การรับรองความถูกต้องของ Windows ใน IIS7.0 หรือ IIS7.5 ไม่ทำงานกับ kerberos (ผู้ให้บริการ = เจรจา) เมื่อข้อมูลประจำตัวของพูลแอปพลิเคชันคือ ApplicationPoolIdentity One ต้องใช้ Network Service หรือบัญชีบิลด์อินอื่น ความเป็นไปได้อีกประการหนึ่งคือการใช้ NTLM เพื่อให้ Windows Authenticatio ทำงาน (ใน Windows Authentication, Providers, วาง NTLM ไว้ด้านบนหรือลบการเจรจา)

Chris van de Vijver


3
ไม่ถูกต้อง รีบูตเซิร์ฟเวอร์ของคุณ สังเกตว่ามันใช้งานได้แล้ว ใช้โปรแกรมแก้ไขด่วน KB2545850
Amit Naidu

ว้าว. รีบูตเพียงแก้ไขให้ฉัน ต้องเช็คเลยว่านานแค่ไหน ความคิดใด ๆ ? ยังไม่ได้ตรวจสอบโปรแกรมแก้ไขด่วน
mplwork

เรามีกรณีเดียวกันอย่างแน่นอน - Negotiate ไม่ทำงานกับ ApplicationPoolIdentity จนกว่าจะรีบูต
SergeyT

0

ฉันมีปัญหาเดียวกันทำให้ผู้ใช้ (Identity) ที่ฉันใช้ในกลุ่มแอปพลิเคชันไม่อยู่ต่ำกว่ากลุ่ม IIS_IUSRS เพิ่มผู้ใช้ลงในกลุ่มและทุกอย่างทำงานได้


0

ในกรณีของฉันวิธีแก้ปัญหาคือ (ด้านบนของการปรับเปลี่ยนที่แนะนำด้านบน) เป็น รีสตาร์ทคอมพิวเตอร์การพัฒนาในพื้นที่ของ / ผู้ใช้ของฉัน / IIS (เซิร์ฟเวอร์ที่โฮสต์) ผู้ใช้ของฉันเพิ่งถูกเพิ่มในกลุ่มความปลอดภัย AD ที่สร้างขึ้นใหม่ - และนโยบายจะไม่มีผลกับบัญชีผู้ใช้ AD จนกว่าฉันจะออกจากระบบ / รีสตาร์ทคอมพิวเตอร์

หวังว่านี่จะช่วยใครบางคนได้


0

ฉันพบปัญหาการแจ้งข้อมูลรับรองเดียวกันและทำการค้นหาอย่างรวดเร็วและไม่มีสิ่งใดบนอินเทอร์เน็ตที่จะแก้ไขได้ ใช้เวลาพอสมควรในการค้นหาปัญหาซึ่งเป็นปัญหาที่โง่เขลา

ใน IIS -> การตั้งค่าขั้นสูง -> ข้อมูลประจำตัวเส้นทางกายภาพ (ว่างเปล่า)

ทันทีที่ฉันเพิ่มรหัสเครื่อง (โดเมน / ผู้ใช้) ที่สามารถเข้าถึง VM / เซิร์ฟเวอร์การแจ้งรหัสผ่านจะหยุดลง

หวังว่านี่จะช่วยได้


0

ฉันมีปัญหานี้ใน. net core 2 และหลังจากทำตามคำแนะนำส่วนใหญ่จากที่นี่ดูเหมือนว่าเราพลาดการตั้งค่าบน web.config

<aspNetCore processPath="dotnet" arguments=".\app.dll" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

การตั้งค่าที่ถูกต้องคือforwardWindowsAuthToken = "true"ซึ่งดูเหมือนชัดเจนในตอนนี้ แต่เมื่อมีสถานการณ์มากมายสำหรับปัญหาเดียวกันก็ยากที่จะระบุ

แก้ไข: ฉันยังพบว่าบทความ Msdnต่อไปนี้เป็นประโยชน์ซึ่งจะช่วยแก้ปัญหา


-1

ฉันได้รับปัญหาเดียวกันและได้รับการแก้ไขโดยการเปลี่ยนรหัสประจำตัวแอปพลิเคชันพูลของกลุ่มแอปพลิเคชันที่เว็บแอปพลิเคชันทำงานกับ NetworkService ใส่คำอธิบายภาพที่นี่

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