Включаем SSO на Windows XP SP3

При развертывании терминальной фермы на Windows Server 2008 R2 или Windows Server 2012, для включения SSO (Single Sign-On) на клиентах с операционной системой Windows XP SP3 необходимо наличие механизма проверки подлинности на уровне сети — Network Level Authentication (NLA). Для включения этой функции необходима правка реестра. В данной статье представлено два способа добавления CredSSP — нового поставщика услуг безопасности (SSP), доступного в пакете обновления Windows XP SP3 с помощью интерфейса поставщика услуг безопасности (SSPI).

Способ первый. Reg-файл.

С правами администратора необходимо запустить reg-файл следующего содержания:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
«Security Packages»=hex(7):6b,00,65,00,72,00,62,00,65,00,72,00,6f,00,73,00,00,\
00,6d,00,73,00,76,00,31,00,5f,00,30,00,00,00,73,00,63,00,68,00,61,00,6e,00,\
6e,00,65,00,6c,00,00,00,77,00,64,00,69,00,67,00,65,00,73,00,74,00,00,00,74,\
00,73,00,70,00,6b,00,67,00,00,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders]
«SecurityProviders»=»msapsspc.dll, schannel.dll, digest.dll, msnsspc.dll, credssp.dll»

Основной минус данного способа заключается в том, что если на компьютере пользователя были уже до этого изменены значения данных двух параметров для каких-либо целей (удален какой-то поставщик безопасности\добавлен какой-то поставщик), то эти изменения будут утеряны. Но если у Вас на клиентских компьютерах данные настройки не изменялись и установлены по умолчанию, то этот способ лучше всего подходит.

Второй способ. VB-скрипт.

Данный способ оказывается более «лояльным» к нестандартным настройкам параметров поставщиков безопасности компьютера. То есть скрипт именно добавляет нужные значения и только в том случае, если их еще нет.


'=========================================================================
'Корневые разделы реестра
'=========================================================================
const HKEY_CURRENT_USER = &H80000001
const HKEY_LOCAL_MACHINE = &H80000002
'=========================================================================
'Определяем наши константы - ключи реестра и имена нужных параметров
'=========================================================================
Const SecurityProviders_Path = "SYSTEM\CurrentControlSet\Control\SecurityProviders\"
Const SecProv = "SecurityProviders"
Const SecurityPackages_Path = "SYSTEM\CurrentControlSet\Control\Lsa\"
Const SecPack = "Security Packages"
'=========================================================================
'Начало скрипта
'=========================================================================
On Error Resume Next
'подключение к WMI
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
If Err.Number <> 0 Then
     WScript.Echo Err.Number & ": " & Err.Description
     WScript.Quit
End If
'-------------------------------------------------------------------------
'Добавляем credssp.dll к значению параметра
'HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SecurityProviders
'-------------------------------------------------------------------------
'Читаем текущее значение параметра
intRes = objReg.GetStringValue(HKEY_LOCAL_MACHINE, SecurityProviders_Path, SecProv, Val)
If intRes <> 0 Then
     WScript.Echo intRes & ": не удалась прочитать значение параметра "
     WScript.Quit
End If
'Производим поиск подстроки credssp.dll в текущем значении параметра
'и только в том случае, если ничего не нашли - изменяем значение параметра
Search = InStr (Val, "credssp.dll")
If (Search = 0) Then
'добавляем к текущему значению параметра ", credssp.dll" и записываем новое значение в реестр
     Val = Val + ", credssp.dll"
     intRes = objReg.SetStringValue(HKEY_LOCAL_MACHINE, SecurityProviders_Path, SecProv, Val)
     If intRes <> 0 Then
          WScript.Echo intRes & ": не удалось установить параметр " & Val
          WScript.Quit
     End If
End If
'-------------------------------------------------------------------------
'Добавляем tspkg к значению параметра
'HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages
'-------------------------------------------------------------------------
'Читаем текущее значение параметра
intRes = objReg.GetMultiStringValue(HKEY_LOCAL_MACHINE, SecurityPackages_Path, SecPack, Val)
If intRes <> 0 Then
     WScript.Echo intRes & ": не удалась прочитать значение параметра "
     WScript.Quit
End If
'Так как параметр Security Packages имеет тип MultiStringValue с ним нужно произвести дополнительные манипуляции
'Соединим множество строк, составляющих массив, в одну строковую переменную с разделителем - переводом каретки
Val = Join(Val, vbCrLf)
'Для поиска создадим переменную, которая покажет нам есть ли строчка tspkg в исходном значении параметра Security Packages
StrExist = 0
'В цикле по всем строчкам в переменной Val ищем вхождени строчки tspkg и если находим, то делаем нашу флаговую переменную равно 1
For Each str In Val
     Search = InStr (Val, "tspkg")
     If Search <> 0  Then
          StrExist = 1
     End if
Next
'Если наш флажок равен 0, то есть tspkg нет среди текущего значения параметра Security Packages, то нужно его добавить
If StrExist = 0 Then
     'добавляем перевод строки и собственно сам пакет безопасности
     Val = Val & vbCr & "tspkg"
     'производим действие обратное тому, что делали с помощью Join и записываем полученный результат     в      значение параметра Security Packages
     Val = Split(Val, vbCr)
     intRes = objReg.SetMultiStringValue(HKEY_LOCAL_MACHINE, SecurityPackages_Path, SecPack, Val)
     If intRes <> 0 Then
          WScript.Echo intRes & ": не удалось установить параметр " & Val
          WScript.Quit
     End If
End If

Большое спасибо следующим ресурсам за информацию:
http://amaksimov.wordpress.com/2011/12/23/microsoft-terminal-services-rds-windows-single-sign-on-via-credssp/
http://nemcd.com/2009/09/proverka-podlinnosti-na-urovne-seti-rdp/

Реклама

About Anton Karlan

MCSE: Server Infrastructure

Posted on 09.08.2013, in Полезное and tagged , , , , , . Bookmark the permalink. Оставьте комментарий.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

w

Connecting to %s

%d такие блоггеры, как: