Înregistrarea numelor participanților la serviciul kerberos într-un dosar

Serviciile web proprii cu suport XML sunt depășite. Într-o versiune viitoare a Microsoft SQL Server, această caracteristică va fi eliminată. Evitați utilizarea acestei caracteristici în noile dezvoltări și planificați modificarea aplicațiilor existente în care este aplicată.

Când creați sau să modificați punctele finale HTTP folosind instrucțiunile CREATE sau ALTER STAȚIILOR STAȚIILOR trebuie să specifice tipul de autentificare a utilizatorului, trimiterea final SOAP de cereri HTTP. Pentru mai multe informații, consultați CREATE ENDPOINT (Transact-SQL) și ALTER ENDPOINT (Transact-SQL).

Utilizând instrucțiunile CREATE ENDPOINT și ALTER ENDPOINT, puteți configura suportul de autentificare Kerberos în următoarele moduri:

Dacă este specificată AUTHENTICATION = KERBEROS, Kerberos este singurul instrument de autentificare HTTP.

Dacă opțiunea de autentificare INTEGRAT, autentificare HTTP pentru punctul final, puteți utiliza următoarele tipuri de autentificări: NEGOCIAZĂ, KERBEROS și NTLM. Dacă parametrul NEGOTIATE este specificat, clientul și serverul încearcă să se autentifice utilizând protocolul Kerberos. Dacă clientul nu acceptă protocolul Kerberos sau dacă negocierile nu sunt posibile, NTLM este folosit din nou pentru autentificare. Pentru clientul nu este trecut înapoi la utilizarea NTLM NEGOCIAZĂ, recomandat pentru a seta parametrul pentru client = AUTENTIFICAREA KERBEROS final.

Pentru a sprijini autentificarea reciprocă Kerberos, instanța SQL Server trebuie să asocieze SPN cu contul pe care se va executa, cum ar fi un cont de sistem local sau un cont de utilizator domeniu. Caracteristicile specifice ale înregistrării unui nume principal al serviciului cu o instanță a serverului SQL sunt determinate de tipul contului de serviciu în care se execută. Dacă SQL Server se execută sub un cont de sistem local, numele de nume de serviciu privat trebuie să fie înregistrate sub numele computerului. Dacă SQL Server se execută sub un cont de utilizator de domeniu, SPN-urile trebuie să se înregistreze cu contul de utilizator de domeniu.

Pentru a asocia SPN cu un cont în numele căruia se execută instanța serverului SQL, utilizați instrumentul Windows SetSPN.exe. Acest instrument adaugă numele principalelor servicii pentru numele computerului pe care se execută instanța serverului SQL în contul de utilizator din domeniul Windows stocat în Active Directory. În acest scenariu, puteți utiliza utilitarul SetSPN.exe pentru a adăuga două nume SPN: unul pentru numele NetBIOS și unul pentru SPN complet.

De exemplu, dacă executați programul SetSPN.exe dintr-o instanță a serverului SQL care rulează pe MyComputer. cu contul în care rulează instanța serverului SQL, vor fi asociate două nume principale de serviciu care trebuie adăugate la director:

Cele mai frecvente probleme asociate cu înregistrarea numelor SPN pentru protocolul Kerberos sunt enumerate mai jos.

Numele SPN nu este înregistrat.

Dacă numele SPN nu este înregistrat, autentificarea Kerberos va funcționa pe computerul local care execută instanța serverului SQL, dar nu va fi trecut pe computerele client la distanță.

Numele SPN este înregistrat de mai multe ori.

Există mai multe situații în care un administrator poate repeta numele participanților la serviciu din directorul de domenii, ceea ce va duce la o eroare atunci când este efectuată autentificarea Kerberos. Aceste rapoarte includ următoarele informații.

Modificați contul de domeniu în care rulează instanța serverului SQL

Dacă executați programul SetSpn.exe atunci când instanța de SQL Server se execută sub un cont de domeniu (de exemplu, DOMAIN \ Utilizator1), și apoi modificați contul de utilizator SQL Server (de exemplu, DOMAIN \ Utilizator2) atunci când SetSPN.exe repornit, același nume de utilizator - Serviciul va fi inserat în directorul pentru ambele conturi.

Instalarea mai multor instanțe ale serverului SQL care rulează sub conturi diferite

Dacă instalați mai multe instanțe de SQL Server, executați fiecare dintre ele în diferite conturi de utilizator și de a efectua programul SetSpn.exe pentru fiecare instanță, aceleași nume SPN vor fi introduse în directorul pentru fiecare cont SQL Server. Acest lucru se aplică cazurilor care se execută atât în ​​contul de utilizator al domeniului, cât și în contul de sistem local.

Ștergerea și reinstalarea unei instanțe a serverului SQL în alt cont

În fiecare dintre aceste situații, problema este că punctul final HTTP va migra înapoi la autentificarea NTLM până când eroarea va fi rezolvată. De obicei, problema poate fi rezolvată prin găsirea de nume SPN duplicate sau vechi în director și ștergerea lor manuală.