NLA support for Remote Desktop on Windows XP SP3

CredSSP is a new Security Support Provider (SSP) that is available in Windows XP SP3 by using the Security Support Provider Interface (SSPI). CredSSP enables a program to use client-side SSP to delegate user credentials from the client computer to the target server. (The target server is accessed by using server-side SSP). Windows XP SP3 involves only the client-side SSP implementation. The client-side SSP implementation is currently being used by Remote Desktop Protocol (RDP) 6.1 Terminal Services (TS). However, the client-side SSP implementation can be used by any third-party program that is willing to use the client-side SSP to interact with programs that are running server-side SSP implementations in Windows Vista or in Windows Server 2008.

To download the CredSSP protocol specification, visit the following Microsoft Web site:

http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/%5BMS-CSSP%5D.pdf (http://download.microsoft.com/download/9/5/e/95ef66af-9026-4bb0-a41d-a4f81802d92c/%5bms-cssp%5d.pdf)

Note By default, CredSSP is turned off in Windows XP SP3.

How to turn on CredSSP


Important This section, method, or task contains steps that tell you how to modify the registry. However, serious problems might occur if you modify the registry incorrectly. Therefore, make sure that you follow these steps carefully. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click the following article number to view the article in the Microsoft Knowledge Base:

322756  (http://support.microsoft.com/kb/322756/ ) How to back up and restore the registry in Windows
  1. Click Start, click Run, type regedit, and then press ENTER.
  2. In the navigation pane, locate and then click the following registry subkey:
    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa
  3. In the details pane, right-click Security Packages, and then click Modify.
  4. In the Value data box, type tspkg. Leave any data that is specific to other SSPs, and then click OK.
  5. In the navigation pane, locate and then click the following registry subkey:
    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProviders
  6. In the details pane, right-click SecurityProviders, and then click Modify.
  7. In the Value data box, type credssp.dll. Leave any data that is specific to other SSPs, and then click OK.
  8. Exit Registry Editor.
  9. Restart the computer.

Scenarios for using CredSSP

Scenario 1: Programmatically use the SSP


You can now use CredSSP to perform client-side authentication in Windows XP SP3. You can use CredSSP together with authentication APIs to successfully authenticate the server-side counterpart programs that are running in Windows Vista or in Windows Server 2008.

For more information about the AcquireCredentialsHandle (CredSSP) function, visit the following Microsoft Web site:

http://msdn2.microsoft.com/en-us/library/aa965463(VS.85).aspx (http://msdn2.microsoft.com/en-us/library/aa965463(VS.85).aspx)

For more information about the InitializeSecurityContext (CredSSP) function, visit the following Microsoft Web site:

http://msdn2.microsoft.com/en-us/library/aa965582.aspx (http://msdn2.microsoft.com/en-us/library/aa965582.aspx)

Scenario 2: Use Terminal Services to connect to Windows Vista or to Windows Server 2008 from Windows XP SP3

  • Use Terminal Services together with the Single Sign-On experience to connect to a Windows Vista-based computer or to a Windows Server 2008-based computer from a Windows XP SP3-based computer by using default (preset) credentials. This feature requires you to modify registry keys that are related to credential delegation.
  • Use Terminal Services to connect from a Windows XP SP3-based computer to a Windows Vista-based computer or to a Windows Server 2008-based computer when Network Level Authentication (NLA) is enforced.

Note You must turn on CredSSP to successfully use Terminal Services to connect to a NLA-enforced Windows Vista-based computer or to a NLA-enforced Windows Server 2008-based computer from a Windows XP SP3-based computer.

CredSSP Group Policy settings

Windows XP SP3 supports CredSSP Group Policy settings that are specific to credentials delegation as it applies in Windows Vista or in Windows Server 2008. However, the CredSSP Group Policy settings are not available as a Group Policy object (GPO) in Windows XP SP3. The CredSSP Group Policy settings can be applied by creating or by modifying registry entries for the required CredSSP Group Policy setting. The registry entries contain the list of server Service Principal Names (SPNs) for which the associated Group Policy setting applies. Additionally, the registry entries contain the serial number of the servers.

For more information about CredSSP Group Policy settings, visit the following Microsoft Web site:

http://msdn2.microsoft.com/en-us/library/bb204773(VS.85).aspx (http://msdn2.microsoft.com/en-us/library/bb204773(VS.85).aspx)

The following registry keys correspond to Group Policy settings:

  • HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationREG_DWORD: AllowDefaultCredentials
    Value data: 1 (enable) 0 (disable)

    REG_DWORD: ConcatenateDefaults_AllowDefault
    Value data: 1 (enable) 0 (disable)

    HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationAllowDefaultCredentials

    “<serial_no>”=”<server SPN>”

  • HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationREG_DWORD: AllowDefCredentialsWhenNTLMOnly
    Value data: 1 (enable) 0 (disable)

    REG_DWORD: ConcatenateDefaults_AllowDefNTLMOnly
    Value data: 1 (enable) 0 (disable)

    HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationAllowDefCredentialsWhenNTLMOnly

    “<serial_no>”=”<server SPN>”

  • HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationREG_DWORD: AllowFreshCredentials
    Value data: 1 (enable) 0 (disable)

    REG_DWORD: ConcatenateDefaults_AllowFresh
    Value data: 1 (enable) 0 (disable)

    HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationAllowFreshCredentials

    “<serial_no>”=”<server SPN>”

  • HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationREG_DWORD: AllowFreshCredentialsWhenNTLMOnly
    Value data: 1 (enable) 0 (disable)

    REG_DWORD: ConcatenateDefaults_AllowFreshNTLMOnly
    Value data: 1 (enable) 0 (disable)

    HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationAllowFreshCredentialsWhenNTLMOnly

    “<serial_no>”=”<server SPN>”

  • HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationREG_DWORD: AllowSavedCredentials
    Value data: 1 (enable) 0 (disable)

    REG_DWORD: ConcatenateDefaults_AllowSaved
    Value data: 1 (enable) 0 (disable)

    HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationAllowSavedCredentials

    “<serial_no>”=”<server SPN>”

  • HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationREG_DWORD: AllowSavedCredentialsWhenNTLMOnly
    Value data: 1 (enable) 0 (disable)

    REG_DWORD: ConcatenateDefaults_AllowSavedNTLMOnly
    Value data: 1 (enable) 0 (disable)

    HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationAllowSavedCredentialsWhenNTLMOnly

    “<serial_no>”=”<server SPN>”

  • HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationREG_DWORD: DenyDefaultCredentials
    Value data: 1 (enable) 0 (disable)

    REG_DWORD: ConcatenateDefaults_DenyDefault
    Value data: 1 (enable) 0 (disable)

    HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationDenyDefaultCredentials

    “<serial_no>”=”<server SPN>”

  • HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationREG_DWORD: DenyFreshCredentials
    Value data: 1 (enable) 0 (disable)

    REG_DWORD: ConcatenateDefaults_DenyFresh
    Value data: 1 (enable) 0 (disable)

    HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationDenyFreshCredentials

    “<serial_no>”=”<server SPN>”

  • HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationREG_DWORD: DenySavedCredentials
    Value data: 1 (enable) 0 (disable)

    REG_DWORD: ConcatenateDefaults_DenySaved
    Value data: 1 (enable) 0 (disable)

    HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationDenySavedCredentials

    “<serial_no>”=”<server SPN>”

For example, assume that you want to turn on the Single Sign-On experience when you use Terminal Services to connect to a Windows Vista-based computer or to a Windows Server 2008-based computer from a Windows XP SP3-based computer. In this case, you would add the following registry entries on the Windows XP SP3-based computer:

HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegation

REG_DWORD: AllowDefaultCredentials
Value data: 00000001

REG_DWORD: ConcatenateDefaults_AllowDefault
Value data: 00000001

HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsCredentialsDelegationAllowDefaultCredentials

“1”=”TERMSRV/*”

Read the complete article here.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.