Rejestrowanie nazwy głównej usługa Kerberos za pomocą HTTP.sys

This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

Podczas tworzenia lub modyfikowania punkty końcowe HTTP przy użyciu CREATE punktu KOŃCOWEGO lub ALTER punktu KOŃCOWEGO, można określić typ uwierzytelnianie, który jest używany do uwierzytelnianie użytkowników, które są wysyłane żądania HTTP SOAP na punkcie końcowym.Aby uzyskać więcej informacji zobacz Utwórz punkt końcowy (języka Transact-SQL) i ALTER ENDPOINT (Transact-SQL).

Za pomocą CREATE ALTER końcowy, można skonfigurować punkty końcowe do obsługi uwierzytelnianie Kerberos w następujący sposób:

  • Ustawiając AUTHENTICATION = protokołu KERBEROS, protokół Kerberos jest używany jako jedyny sposób uwierzytelnianie HTTP

  • Gdy AUTHENTICATION = układy, uwierzytelnianie HTTP dla punktu końcowego może oferować następujących opcji jako część wezwania uwierzytelniania: NEGOTIATE, KERBEROS i NTLM. Dla opcji NEGOTIATE klient i serwer spróbuj nawiązać uwierzytelnianie oparte na protokole Kerberos.Jeżeli protokół Kerberos nie jest obsługiwana przez klient lub negocjacja nie jest możliwe, uwierzytelnianie powróci do NTLM.Aby zapobiec o kliencie powrotu do NTLM, korzystając z NEGOTIATE, zalecane klient ustawienie uwierzytelnianie = protokołu KERBEROS dla punktu końcowego.

Do obsługi uwierzytelnianie wzajemnego, w obszarze Kerberos, wystąpienie SQL Server 2005 lub SQL Server 2008 należy skojarzyć głównej nazwy usługa (główna nazwa usługi) przy użyciu konta, to będzie musi być uruchomiona, takich jak konto systemu lokalnego lub konta użytkownika domena. Szczegółowe o rejestrację nazwy główna nazwa usługi przez konkretne wystąpienie SQL Server zależą od typu konta usługa skonfigurowano w obszarze. Jeśli SQL Server działa pod lokalne konto systemowe lub konto usługa sieciowej musi być zarejestrowany SPN pod nazwą komputera. Jeśli SQL Server działa na koncie użytkownika domena SPN musi być zarejestrowany przy użyciu nazwy użytkownika domena.

Za pomocą SetSPN.exe

Aby włączyć skojarzenia główna nazwa usługi do konta, wystąpienie SQL Server 2005 lub SQL Server 2008 jest uruchomiony, należy użyć narzędzie obsługi systemu Windows SetSPN.exe. To narzędzie dodaje główna nazwa usługi dla nazwy komputera, na którym SQL Server przy użyciu konta użytkownika usługa domena systemu Windows znajduje się w usłudze Active Directory jest uruchomione wystąpienie. W tym scenariuszu narzędzie SetSPN.exe może służyć do dodawania dwóch SPN: jedną dla nazw NetBIOS i drugą dla w pełni kwalifikowaną nazwą DNS.

Na przykład, jeśli narzędzie SetSPN.exe jest wykonywane z SQL Server wystąpienie uruchomionego na MyComputer, skojarzony z kontem są następujące dwie nazwy SPN SQL Server wystąpienie jest uruchomiony i musi zostać dodany do katalogu:

HTTP/MyComputer;
HTTP/MyComputer.fully.qualified.domain.name.com

Należy zauważyć, że pojedyncze konto może mieć wiele główna nazwa usługi, lecz główna nazwa usługi mogą być rejestrowane tylko dla jednego konta.

Do usunięcia tych samych dwie nazwy główna nazwa usługi, w systemach NetBIOS i DNS w pełni kwalifikowana, użyj SetSPN.exe.

Uwagi

  • Podobnie jak Httpcfg.exe SetSPN.exe jest dostępna Windows Server 2003 i jest instalowany podczas instalowania httpcfg.exe i innych narzędzi obsługi systemu Windows za pomocą tej samej procedury. Aby uzyskać więcej informacji zobaczKonfigurowanie sterownika trybu jądra protokołu HTTP (HTTP.sys).

  • Jeśli SQL Server wystąpienie nie jest uruchomiona jako konto system lokalny, zintegrowanego uwierzytelnianie zmieniać tylko użytkownicy z uprawnieniami ADMIN domena może główna nazwa usługi rejestracji za pomocą narzędzie SetSPN.exe.

  • If a SQL Server instance is running as the local system account, only members of the SQL Serversysadmin fixed server role can change SPN registrations by using the SetSPN.exe tool.

  • Jeśli konto usługa systemu lokalnego, nazwy główna nazwa usługi jest dodawana do konta usługa Active Directory z komputera bez konieczności korzystania z narzędzie SetSPN.exe.

Składnia SetSPN.exe

Składnia SetSPN.exe jest następująca:

setspn { -ASPN | -DSPN | -L } service_account

Argumenty

  • -A
    Dodaje określoną nazwę główna nazwa usługi do konta.

  • -D
    Usuwa określoną nazwę główna nazwa usługi do konta.

  • -L
    Wyświetla listę wszystkich SPN zarejestrowane na koncie.

Przykłady

Jeśli wystąpienie SQL Server działa jako (użytkownika do domenaMyDomain\MySQLAccount) na komputerze o nazwie MySQLHost, następujące polecenia mogą być używane do ustawiania odpowiedniej nazwy SPN:

setspn –A http/MySQLHost MyDomain\MySQLAccount
setspn –A http/MySqlHost.Mydomain.Mycorp.com MyDomain\MySQLAccount

Należy zauważyć, że jedno konto może mieć wiele główna nazwa usługi (po jednym dla każdej nazwy usługa lub hosta), lecz główna nazwa usługi mogą być rejestrowane tylko jednego konta.O tej samej nazwy główna nazwa usługi zarejestrowane na wiele kont powoduje, że uwierzytelnianie Kerberos nie powiedzie się.

Na przykład konto MyDomain\MySQLAccount może mieć następujące różne nazwy SPN zarejestrowane na nim. Pierwsze dwa polecenia są dwie różne usługi)http i rpc). Ostatnia z nich jest dla nazwy innego hosta, przy założeniu, że komputer ma wiele nazw hostów.

setspn –A http/MySQLHost MyDomain\MySQLAccount
setspn –A rpc/MySQLHost MyDomain\MySQLAccount
setspn –A http/MySecondHost MyDomain\MySQLAccount

I odwrotnie w poniższym scenariuszu spowoduje błąd protokołu Kerberos:

setspn –A http/MySQLHost MyDomain\MySQLAccountOne
setspn –A http/MySQLHost MyDomain\MySQLAccountTwo

Błąd występuje ze względu na to, że dostępne są dwa wystąpienia SQL Server na komputerze, na którym jest uruchomiona w ramach dwóch różnych usługa konta ()MySQLAccountOne i MySQLAccountTwo). Rejestrowanie obie nazwy SPN, jeden dla każdego wystąpienie SQL Server nie jest obsługiwany scenariusz.

Ma to znaczenie, gdy wiele wystąpień SQL Server które są uruchamiane na tym samym komputerze, na różnych kontach. Nazwę główna nazwa usługi mogą być rejestrowane tylko dla jednego konta.Jeśli potrzebna jest wiele wystąpień SQL Server (na przykład Inst1 and Inst2) Aby można było współistnieć obok inne aplikacje (takie jak IIS), a użytkownik chce używać uwierzytelnianie HTTP Kerberos dla wszystkich usług, należy użyć jednej z następujących opcji w celu rozwiązania konfliktów rejestracji nazwy główna nazwa usługi:

  • Mają wszystkie wystąpienia i aplikacje uruchomione jako tego samego konta.

    Na przykład Inst1, Inst2 i internetowych usług informacyjnych wszystkich uruchamiane jako system lokalny lub Moja_domena\MyServiceAccount.

  • Zarejestrować wiele nazw hostów dla tego samego komputera oraz każde wystąpienie i aplikacji nasłuchiwania innego hosta.W związku z tym w tym przypadek należy wykonać następujące czynności:

    • Utwórz trzy nazwy innego hosta dla komputera.

    • Przypisanie każdego hosta do innej aplikacji.

    • Zarejestruj się trzy zestawy SPN, jeden dla każdej kombinacji nazwy/aplikacji hosta.

Rozwiązywanie problemów z Kerberos główna nazwa usługi rejestracji problemów

Najbardziej typowych problemów dotyczących rozwiązywania problemów dla rejestracji główna nazwa usługi protokołu Kerberos są następujące:

  • główna nazwa usługi nie jest zarejestrowany.

    Gdy główna nazwa usługi nie jest zarejestrowany, uwierzytelnianie Kerberos będą działać z komputera lokalnego, na którym wystąpienie SQL Server jest uruchomiony, ale nie będzie działać na komputerach zdalnych klientów.

  • główna nazwa usługi jest zarejestrowana więcej niż jeden raz.

    Istnieje kilka scenariuszy, w których administrator może zduplikować główne nazwy usługi (SPN) w katalogu domeny, co spowoduje niepowodzenie uwierzytelniania Kerberos.Należą do nich:

    • Wprowadzeniu zmian do konta domena, w których wystąpienie SQL Server Uruchamia

      Jeśli SetSpn.exe jest uruchamiana po uruchomieniu instancji SQL Server jako konta jednej domena, na przykład domena\User1, a następnie konta domena, które jest używane do uruchamiania SQL Server ulegnie zmianie, takie jak domena\User2, po ponownym uruchomieniu SetSPN.exe spowoduje tej samej nazwy główna nazwa usługi w katalogu w obu kont.

    • Instalowanie wielu wystąpień SQL Server działających na różnych kontach.

      W przypadku instalowania wielu wystąpień SQL Server a następnie uruchom każde wystąpienie przy użyciu innego konta, jeśli SetSpn.exe jest uruchamiane przy każdym wystąpieniu będzie zduplikowanych kont w katalogu w każdym SQL Server konto usługa. Dotyczy to na oba wystąpienia, które są uruchomione na użytkownika domena, a także z lokalnego konta systemowego.

    • Usunięcie i ponowne zainstalowanie wystąpienie SQL Server przy użyciu innego konta

      Po zainstalowaniu SQL Server w jednym koncie zarejestrować SPN, usunięcia i ponownej instalacji SQL Server zgodnie z innego konta, a następnie reregister SPN każde konto domena będą miały takie same nazwy SPN. Oznacza to, że SPN zostaną zduplikowane.

W każdym z tych scenariuszy zagadnieniem jest na to, że punkt końcowy HTTP powróci do uwierzytelnianie NTLM, aż problem zostanie rozwiązany.Obejmuje to zazwyczaj wyszukiwanie katalogu SPN zduplikowane lub przestarzałe i ręcznie.