อาการ
พิจารณาสถานการณ์ต่อไปนี้:
-
ผู้ดูแลระบบได้โดยใช้แบบฟอร์มรับรองความถูกต้อง (FBA) ตั้งค่าใน Microsoft Forefront คามจัดการเกตเวย์ (TMG) 2010
-
แอตทริบิวต์ของชื่อที่แตกต่าง (DN) สำหรับผู้ใช้ประกอบด้วยเครื่องหมายทับ (/) และอักขระพิเศษกำหนดเองที่ใช้งานอยู่ไดเรกทอรีน้ำหนักเบาและไดเรกทอรีเข้าถึงโพรโทคอล LDAP
-
ผู้ใช้พยายามเปลี่ยนรหัสผ่านของเขา หรือเธอ
ในสถานการณ์สมมตินี้ การเปลี่ยนรหัสผ่านจะไม่สำเร็จ และผู้ใช้ได้รับข้อความแสดงข้อผิดพลาดทั่วไปต่อไปนี้:
ชื่อผู้ใช้หรือรหัสผ่านเดิมไม่ถูกต้อง หรือรหัสผ่านใหม่ไม่ตรงตามข้อกำหนดความซับซ้อนขั้นต่ำ โปรดลองอีกครั้ง
นอกจากนี้ สืบค้นกลับใน TMG 2010 อาจระบุว่าADsOpenObjectล้มเหลว ด้วย 0x80005000 (E_ADS_BAD_PATHNAME) หรือ 0x80072032 (ERROR_DS_INVALID_DN_SYNTAX) ได้เนื่องจากมีอักขระพิเศษในการร้องขอของ LDAP escaped
สาเหตุ
ปัญหานี้เกิดขึ้นสำหรับบัญชีผู้ใช้ Active Directory ใด ๆ ที่แอตทริบิวต์ DN ประกอบด้วยตัวอักษรพิเศษที่ไดเรกทอรีที่ใช้งานอยู่และอักขระเครื่องหมายทับไปข้างหน้า
การแก้ไข
เมื่อต้องการแก้ไขปัญหานี้ ติดตั้งค่าสะสม 4สำหรับ 2. Service Pack 2010 การเกตเวย์การจัดการของคุกคาม Forefront หลังจากใช้การปรับปรุงนี้ คุณสามารถกำหนดค่าเกตเวย์จัดการความเสี่ยงเพื่อใช้แอตทริบิวต์objectGUIDแทน DistinguishedNameแอตทริบิวต์ในเส้นทางของ LDAP ไดเรกทอรีที่ใช้งานอยู่เมื่อต้องการแก้ไขปัญหาที่อธิบายไว้ในบทความนี้ เมื่อต้องการเปิดใช้งานฟังก์ชันนี้ ให้ทำตามขั้นตอนเหล่านี้:
-
คัดลอก และวางสคริปต์ต่อไปนี้ลงใน Notepad และบันทึก โดยใช้ชื่อ "EnableKB2888619.vbs" แฟ้ม:
set curArray = CreateObject("FPC.Root").GetContainingArray()Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEABC}"Const SE_VPS_NAME = "UseObjectGUIDInLDAPADsPath"Const SE_VPS_VALUE = 1Sub SetValue()' Create the root obect.Dim root ' The FPCLib.FPC root objectSet root = CreateObject("FPC.Root")'Declare the other objects needed.Dim array ' An FPCArray objectDim VendorSets ' An FPCVendorParametersSets collectionDim VendorSet ' An FPCVendorParametersSet object' Obtain references to the array object' and the network rules collection.Set array = curArray Set VendorSets = array.VendorParametersSetsOn Error Resume NextSet VendorSet = VendorSets.Item( SE_VPS_GUID )If Err.Number <> 0 ThenErr.Clear' Add the itemSet VendorSet = VendorSets.Add( SE_VPS_GUID )CheckErrorWScript.Echo "New VendorSet added... " & VendorSet.NameElseWScript.Echo "Existing VendorSet found... value- " & VendorSet.Value(SE_VPS_NAME)End IfIf VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE ThenErr.ClearVendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUEIf Err.Number <> 0 ThenCheckErrorElseVendorSets.Save false, trueCheckErrorIf Err.Number = 0 ThenWScript.Echo "Done with " & SE_VPS_NAME & ", saved!"End IfEnd IfElseWScript.Echo "Done with " & SE_VPS_NAME & ", no change!"End IfEnd SubSub CheckError()If Err.Number <> 0 ThenWScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.DescriptionErr.ClearEnd IfEnd SubSetValue
-
เรียกใช้สคริปต์บนสมาชิกอาร์เรย์เกตเวย์จัดการความเสี่ยงอย่างใดอย่างหนึ่ง การเปลี่ยนแปลงที่มีสคริปต์จะมีผลเมื่อทำการกำหนดค่าเกตเวย์การบริหารความเสี่ยง เริ่มการทำงานการบริการไฟร์วอลล์ไม่จำเป็นสำหรับการเปลี่ยนแปลงมีผลบังคับใช้อยู่
-
เมื่อต้องการแปลงกลับการเปลี่ยนแปลง และกลับไปยังลักษณะการทำงานเดิม ค้นหาบรรทัดต่อไปนี้ในสคริปต์:
ค่า const SE_VPS_VALUE = 1
-
เปลี่ยนบรรทัดนั้นเป็นดังนี้:
ค่า const SE_VPS_VALUE = 0
-
บันทึกสคริปต์ และจากนั้น เรียกใช้สคริปต์บนหนึ่งสมาชิกของอาร์เรย์
วิธีแก้ไขปัญหาชั่วคราว
เมื่อต้องการหลีกเลี่ยงปัญหานี้ เอาการทับหรืออักขระพิเศษ Active Directory จากแอตทริบิวต์ DN ของผู้ใช้
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"
ข้อมูลเพิ่มเติม
อักขระพิเศษหลีกในแอตทริบิวต์ของไดเรกทอรีที่ใช้งานอยู่เป็นดังต่อไปนี้:
-
เครื่องหมายจุลภาค ()
-
เครื่องหมายทับขวา (\)
-
เครื่องหมายตัวเลข (#)
-
เครื่องหมายบวก (+)
-
น้อยกว่า (<)
-
มากกว่าเครื่องหมาย()
-
เครื่องหมายอัฒภาค ()
-
เครื่องหมายคำพูด (")
-
เครื่องหมายเท่ากับ (=)
-
นำหน้า หรือช่องว่างต่อท้าย
ตัวอย่างของแอตทริบิวต์ของบัญชีผู้ใช้:
sAMAccountName: JeffSmithdisplayName: Smith เจฟ / TMGdistinguishedName: CN = Smith\ เจฟ / TMG, OU =สนับสนุน DC = Fabrikam, DC = comหมายเหตุ
-
อักขระ escape เครื่องหมายทับขวา (\) ถูกเพิ่มเข้าใน DN อัตโนมัติ
-
แอตทริบิวต์distinguishedNameสำหรับบัญชีผู้ใช้นี้ประกอบด้วยทั้งแบบ Active Directory อักขระพิเศษด้วยเครื่องหมายจุลภาค () และทับ (/)
อ้างอิง
สำหรับข้อมูลเพิ่มเติม ดูตัวอย่างต่อไปนี้:
ดูคำศัพท์เฉพาะทางMicrosoft ใช้เพื่ออธิบายปรับปรุงซอฟต์แวร์