Udostępnij za pośrednictwem


Personifikacja i poświadczenia dla połączenia

W SQL Server Integracja (CLR) w czasie wykonywania typowych języka, przy użyciu uwierzytelnianie systemu Windows jest złożony, ale jest bezpieczniejsze niż korzystanie z uwierzytelnianie programu SQL Server. W przypadku korzystania z uwierzytelnianie systemu Windows, należy pamiętać, poniższe uwagi.

Domyślnie proces programu SQL Server, który łączy się z systemu Windows uzyskuje w kontekście zabezpieczeń konta usługa programu SQL Server w systemie Windows.Jednak istnieje możliwość mapowania funkcja środowiska CLR tożsamości serwera proxy, dzięki czemu jego połączeń wychodzących w innym kontekście zabezpieczeń niż konto usługa systemu Windows.

W niektórych przypadkach może zajść potrzeba personifikacji wywołującego przy użyciu SqlContext.WindowsIdentity Właściwość zamiast uruchamiania jako konto usługa. The WindowsIdentity wystąpienie represents the identity of the klient that invoked the calling code, and is only available when the klient used Windows uwierzytelnianie. Po uzyskaniu WindowsIdentity wystąpienie, którymi można się połączyć Impersonate Aby zmienić tokenu zabezpieczeń wątek, a następnie otwórz ADO.NET połączeń w imieniu klient.

Po wywołaniu SQLContext.WindowsIdentity.Impersonate, nie można uzyskać dostępu do danych lokalnych i nie można uzyskać dostępu do danych systemowych. Dostęp do danych, należy wywołać WindowsImpersonationContext.Undo.

W poniższym przykładzie pokazano, jak dokonać personifikacji wywołującego przy użyciu SqlContext.WindowsIdentity Właściwość.

Visual C#

WindowsIdentity clientId = null;
WindowsImpersonationContext impersonatedUser = null;

clientId = SqlContext.WindowsIdentity;

// This outer try block is used to protect from 
// exception filter attacks which would prevent
// the inner finally block from executing and 
// resetting the impersonation.
try
{
   try
   {
      impersonatedUser = clientId.Impersonate();
      if (impersonatedUser != null)
         return GetFileDetails(directoryPath);
         else return null;
   }
   finally
   {
      if (impersonatedUser != null)
         impersonatedUser.Undo();
   }
}
catch
{
   throw;
}

Uwaga

W SQL Server 2008, brak zachowanie zmiany w personifikacji. Aby uzyskać więcej informacji zobaczBreaking Changes to Database Engine Features in SQL Server 2008.

Ponadto jeśli użytkownik uzyskał Microsoft Wystąpienie tożsamość systemu Windows, domyślnie nie można propagować tego wystąpienia do innego komputera; infrastrukturę zabezpieczeń systemu Windows ogranicza, które domyślnie. Jest jednak mechanizm o nazwie „ delegowania"umożliwiającym rozprzestrzenianie tożsamości systemu Windows na wielu komputerach zaufanych.Dowiedz się więcej o delegacji w artykule TechNet"Przejście protokół Kerberos i delegowania ograniczonego".

See Also

Concepts