Назад | Перейти на главную страницу

Ошибка Kerberos APP_MODIFIED при использовании записи DNS CNAME

У меня есть рабочий сервер, который я назову CONTOSO\MachineA, под управлением SQL Server. У меня есть сервер разработки, который я назову CONTOSO\MachineB, под управлением IIS. Оба сервера работают под управлением Windows Server 2008. У меня есть пользователь домена, которого я назову CONTOSO\MyAppSvc. У меня две записи CNAME, myapp => MachineA и myappdev => MachineB.

Моя цель - подключить клиентов (интрасети) к IIS на MachineB и аутентификация через аутентификацию Windows, а затем для приложения, чтобы олицетворять их и подключаться к SQL на MachineA как сами.

MachineB запускает другой экземпляр SQL Server для тестирования, и я убедился, что SQL настроен правильно для аутентификации с двойным прыжком, запустив SELECT * FROM [MachineA].[My App DB].App.SomeTable через SSMS (on MyWorkstation) => SQL Server (on MachineB) => SQL Server (on Machine A).

MyApp на IIS на MachineB настроен с олицетворением и аутентификацией Windows (только для переговоров) и работает в MyAppPool который работает как MyAppSvc. system.webServer/ security/ authentication/ windowsAuthentication @useAppPoolCredentials правда и @useKernelMode ложно. MachineB и MyAppSvc оба доверяют неограниченное делегирование. Есть два SPN на MyAppSvc: HTTP/myapp и HTTP/myapp.contoso.local.

Используя wirehark, я вижу следующее, когда пытаюсь просмотреть http://myapp/aPage:

Проблема заключается в том, что запись DNS является записью CNAME, а не записью A, в сочетании с тем, что SPN настроены для имени хоста. MyApp а не имя машины MachineB. Решение состоит в том, чтобы либо изменить запись DNS для MyApp к записи A, которая указывает непосредственно на IP-адрес MachineB или добавить SPN HTTP/MachineB и HTTP/MachineB.Contoso.local (старые наверняка можно было удалить).