sql server - Kerberos Double Hop

Indlæg af Hanne Mølgaard Plasc

Problem



Vi har den berygtede Kerberos double hop problem.


Dette er et helt nyt domæne, der migreres fra en anden udbyder, hvor efterligning og delegation tidligere har fungeret. Vi har opgraderet OS'er og til den nyeste SQL-server (2017).


WPF app (bruger domæne creds) -> Web Service (WCF app på IIS 10) -> SQL 2017 (navngivet forekomst)


Webtjenesten kører under en domænekonto. Web-tjenesten har en spn-registrering, Anonym Auth er deaktiveret, som det er formularer auth, ASP.NET Impersonation og Windows Auth er aktiveret. Udbydere er 'Forhandle og NTLM', 'Kernal Mode' er deaktiveret, 'Brug App Pool credentials' er aktiveret. SPN oprettet:


HTTP/<url of web service> <AppPool Creds> 


Vi kan logge ind på webtjenesten via en browser på en fjerncomputer, indtaste domæneoplysninger og få det forventede svar (webside vist). IIS Log viser domænebruger creds som forventet.


SQL-serveren er et navngivet eksempel, der kører under domæne-creds. SPN'er oprettet:


MSSQLSvc/<fqdn>:<Instance> <SQL Domain Creds>

MSSQLSvc/<sql server netbios>:<Instance> <SQL Domain Creds>

MSSQLSvc/<fqdn>:<port> <SQL Domain Creds>

MSSQLSvc/<sql server netbios>:<port> <SQL Domain Creds>


IIS App Pool-brugerkontoen i AD er opsætningen for begrænset delegation til SQL-serveren for både porten og det navngivne eksempel.


Når du logger ind via software til webservice (WPF ringer WCF Service uden databaseopkald), ses et normalt svar.


Når du logger ind via software til webservice med et databaseopkald, viser SQL-profilen Anonym Logon. Med Kerberos Logging aktiveret i IIS-boks, modtages følgende fejl:


Error Code: 0xd KDC\_ERR\_BADOPTION

Extended Error: 0xc0000225 KLIN(0)

Server Name: MSSQLSvc/<sql server fqdn>:49942

Target Name: MSSQLSvc/<sql server fqdn>:49942@<domain.com>


Vi forsøgte også ubegrænset delegation, men fik samme resultat.


SETSPN -X viser ingen dubletter.


På forhånd tak for din hjælp!

Bedste reference


Når alt andet fejler, og du har bogstaveligt talt brugt dage og dage på at arbejde på problemet og læser hver artikel på internettet:


REBOOT


Jep. Det var løsningen. Genstarter IIS-serveren, som var serveren, der delegerede tilladelserne, løste problemet.


For dem der ønsker at hurtigt og nemt opsætte en begrænset delegation mellem IIS og en forekomst af SQL, som begge kører under brugerdefinerede domæne-creds, skal du indstille dine indstillinger nøjagtigt som ovenfor og genstarte.


Bedste ønsker.