Я думаю, вы на правильном пути.Вам просто нужно больше устранить неполадки в настройке перехода протокола.
Я предполагаю, что вы правильно настроили поставщика членства в Active Directory, чтобы вы могли успешно войти на свою веб-страницу, используя имя пользователя и пароль активного каталога.Если это не так, пожалуйста, проигнорируйте остальную часть моего ответа:)
Из того, что я увидел в вашем вопросе, вы получили токен своего пользователя, используя S4USelf от WindowsIdentity.Затем вы используете S4UProxy для передачи олицетворенного токена серверу SQL.Поскольку вы сказали, что получили только ImpersonationLevel.Identification
, это означает, что вы не смогли выполнить переход по протоколу.
Вы должны понимать, что разрешение одной машине выполнять переход по протоколу в домене - это очень высокая привилегия.Предоставление серверу для перехода по протоколу почти означает, что вы доверяете этому серверу почти как контроллеру домена.Вам нужно сознательно принять это решение в AD, чтобы сервер имел такую возможность, и вы должны быть администратором domian, чтобы внести это изменение.Если вы этого не сделали, вы, вероятно, неправильно настроили свою вещь.
Есть пара вещей, которые нужно проверить.
Сначала убедитесь, что вы выбрали "Доверять этому компьютеру возможность делегированияТолько указанные службы "и затем вы выбрали" выберите Использовать любой протокол аутентификации "в своей учетной записи службы.Вы можете создать учетную запись домена. Здесь - ссылка на то, как создать служебную учетную запись для ASP.NET.Помните, вам нужна учетная запись домена.После создания учетной записи службы домена обязательно перейдите на вкладку делегирования этой учетной записи и выберите правильные параметры.
Во-вторых, необходимо убедиться, что имена участников-служб установлены правильно.Я понимаю, что в размещенной вами ссылке упоминается только имя участника-службы вашей учетной записи службы ASP.NET.На самом деле, вы также должны убедиться, что учетная запись службы на вашем сервере SQL также настроена правильно.Иными словами, Windows вообще не будет использовать аутентификацию Kerberos.Он вернется к использованию NTLM.Существует множество деталей для правильной настройки имени участника-службы на сервере SQL.Вы можете сначала проверить здесь и посмотреть, повезет ли вам.По моему опыту, большинство администраторов баз данных не знают, как их правильно настроить.Они даже не знают об этом, потому что большинство приложений работают нормально с NTLM.Необходимо обратить внимание на учетную запись службы сервера SQL и номер порта, который она использует.
В-третьих, вам нужно убедиться, что ничто не отключает делегирование Kerberos.Некоторые конфиденциальные учетные записи AD по умолчанию запрещены для делегирования.Например, встроенная учетная запись администратора.Итак, вам лучше использовать некоторые другие обычные учетные записи пользователей для целей тестирования.
ОБНОВЛЕНИЕ
Я только что нашел еще одну статью , обучающую вас, как настроитьпротокол перехода для ASP.NET.В нем упоминалось, что вам необходимо предоставить право TCB учетной записи службы IIS, чтобы убедиться, что она может создавать WindowsIdentity типа Impersonation
.Вы можете дать ему шанс.