Triệu chứng
Hãy xem xét tình huống sau:
-
Quản trị viên đã dựa trên biểu mẫu xác thực (FBA) thiết lập trong Microsoft Forefront Threat Management Gateway (TMG) 2010.
-
Thuộc tính tên đặc trưng (DN) cho người dùng có chéo (/) và một ký tự đặc biệt xác định Active Directory thư mục nhẹ truy cập giao thức LDAP.
-
Người dùng cố gắng thay đổi mật khẩu của mình.
Trong trường hợp này, thay đổi mật khẩu không thành công và người dùng nhận được thông báo lỗi chung sau:
Tên người dùng hoặc mật khẩu cũ không hợp lệ, hoặc mật khẩu mới không đáp ứng các yêu cầu tối thiểu phức tạp. Vui lòng thử lại.
Ngoài ra, theo dõi TMG 2010 có thể chỉ ra rằng ADsOpenObject không 0x80005000 (E_ADS_BAD_PATHNAME) hoặc 0x80072032 (ERROR_DS_INVALID_DN_SYNTAX) vì ký tự đặc biệt trong yêu cầu LDAP thoát.
Nguyên nhân
Sự cố này xảy ra bất kỳ tài khoản người dùng Active Directory mà DN tính chứa một ký tự đặc biệt Active Directory và một ký tự chéo.
Giải pháp
Để giải quyết vấn đề này, cài đặt Cập Nhật 4 cho Forefront Threat Management Gateway 2010 gói dịch vụ 2 sau khi bạn áp dụng bản cập nhật này, bạn có thể cấu hình Threat Management Gateway sử dụng thuộc tính objectGUID thay vì DistinguishedName thuộc tính trong Active Directory LDAP đường dẫn để khắc phục sự cố được mô tả trong bài viết này. Để kích hoạt chức năng này, hãy làm theo các bước sau:
-
Sao chép và dán đoạn mã sau vào Notepad sau đó lưu bằng cách sử dụng tên tệp "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
-
Chạy tập lệnh trên một trong các thành viên mảng Threat Management Gateway. Thay đổi lệnh sẽ có hiệu lực khi cấu hình Threat Management Gateway đồng bộ hóa. Không khởi động lại dịch vụ tường lửa là cần thiết để thay đổi có hiệu lực.
-
Trở lại thay đổi và trở về hành vi ban đầu, xác định vị trí dòng sau trong tập lệnh:
Const SE_VPS_VALUE = 1
-
Thay đổi dòng như sau:
Const SE_VPS_VALUE = 0
-
Lưu tập lệnh và sau đó chạy tập lệnh trên một loạt các thành viên.
Cách giải quyết
Để khắc phục sự cố này, loại bỏ dấu gạch chéo lên hoặc ký tự đặc biệt của Active Directory từ DN thuộc tính của người dùng.
Trạng thái
Microsoft đã xác nhận đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".
Thông tin Bổ sung
Thoát ký tự đặc biệt trong thuộc tính Active Directory là như sau:
-
Dấu phẩy ()
-
Dấu gạch chéo ngược (\)
-
Ký hiệu số (#)
-
Dấu cộng (+)
-
Chưa đăng nhập (<>
-
Lớn hơn đăng)
-
Dấu chấm phẩy (;)
-
Dấu nháy kép (")
-
Dấu bằng (=)
-
Hàng đầu hoặc dấu tại
Ví dụ về thuộc tính tài khoản người dùng:
sAMAccountName: JeffSmithdisplayName: Smith, Jeff / TMGdistinguishedName: CN = Smith\, Jeff / TMG, OU = hỗ trợ, DC = Fabrikam, DC = comLưu ý́
-
Ký tự thoát xuyệc ngược (\) được tự động thêm vào DN.
-
Thuộc tính distinguishedName cho tài khoản người dùng này chứa ký tự đặc biệt Active Directory dấu phẩy, và chéo (/).
Tham khảo
Để biết thêm thông tin, hãy xem mục sau:
Xem ngữ Microsoft sử dụng để miêu tả các bản cập nhật phần mềm.