Microsoft ISA Server & Forefront TMG

Ошибка в ISA Server 2006, когда существует несколько пользовательских учетных записей, которые имеют одинаковые имена в разных доменах.

Итак, имеем сайт в локальной интрасети, опубликованный с помощью ISA Server 2006 и несколько пользовательских учетных записей, которые имеют одинаковые имена в разных доменах.

Что происходит, когда у вас есть несколько доменов в одном семействе, к которому принадлежит брандмауэр ISA, и одинаковые имена пользователей существуют в нескольких доменах? При попытке войти пользователь не сможет войти!!!

Следующий сценарий может привести к этой проблеме:

Вы используете ISA Server 2006 для публикации сайта локальной интрасети.
Вы включаете аутентификацию на основе форм (FBA) и Разрешаете пользователям изменять свои пароли для веб приемника.
ISA Server является членом домена. К примеру, домен - Domain1.
Существует несколько доменов в семействе, а также существуют пользовательские учетные записи с одинаковыми названиями в нескольких доменах. Например, учетные записи Domain1\user1 и Domain2\user1.
Одна из пользовательских учетных записей отключена. Например, Domain1\user1 отключена.
Вы пытаетесь использовать другую учетную запись, чтобы войти на сайт локальной интрасети. Например, вы используете Domain2\user1, чтобы войти на сайт локальной интрасети.

Что же нам делать? Microsoft для решения этой проблеммы предлогает нам просто запустить следующий vbs скрипт:

Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"
Const SE_VPS_NAME = "EnableMultipleFlatUserName"
Const SE_VPS_VALUE = true

Sub SetValue()

  ' Create the root obect.
  Dim root ' The FPCLib.FPC root object
  Set root = CreateObject("FPC.Root")

  'Declare the other objects needed.
  Dim array ' An FPCArray object
  Dim VendorSets ' An FPCVendorParametersSets collection
  Dim VendorSet ' An FPCVendorParametersSet object

  ' Get references to the array object
  ' and the network rules collection.
  Set array = root.GetContainingArray
  Set VendorSets = array.VendorParametersSets

  On Error Resume Next
  Set VendorSet = VendorSets.Item( SE_VPS_GUID )

  If Err.Number <> 0 Then
  Err.Clear

  ' Add the item
  Set VendorSet = VendorSets.Add( SE_VPS_GUID )
  CheckError
  WScript.Echo "New VendorSet added... " & VendorSet.Name

  Else
  WScript.Echo "Existing VendorSet found... value- " & VendorSet.Value(SE_VPS_NAME)
  End If

  if VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE Then

  Err.Clear
  VendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUE

  If Err.Number <> 0 Then
  CheckError
  Else
  VendorSets.Save false, true
  CheckError

  If Err.Number = 0 Then
  WScript.Echo "Done with " & SE_VPS_NAME & ", saved!"
  End If
  End If
  Else
  WScript.Echo "Done with " & SE_VPS_NAME & ", no change!"
  End If

End Sub

Sub CheckError()

  If Err.Number <> 0 Then
  WScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.Description
  Err.Clear
  End If

End Sub

SetValue

В результате чего мы получим то что хотим.

Оригинал здесь.


Пост от Tue, Aug 26 2008 12:01 от anton04
Copyright 2003-2017 www.IsaServer.Ru

Rambler's Top100 Яндекс.Метрика Яндекс цитирования