У нас есть служба Windows .Net, которая использует Httplistener и аутентифицирует запросы с помощью Kerberos. Когда пользователи подключаются через свой браузер, в журнале событий пользователей отображается ошибка с идентификатором события Kerberos 4:
Клиент Kerberos получил от сервера ошибку KRB_AP_ERR_MODIFIED. $ имя пользователя $. Используемое целевое имя было HTTP / $ servername $. $ Domain $ .com.au. Это указывает на то, что целевому серверу не удалось расшифровать билет, предоставленный клиентом. Это может произойти, если основное имя целевого сервера (SPN) зарегистрировано в учетной записи, отличной от учетной записи, которую использует целевая служба. Убедитесь, что целевое SPN зарегистрировано только в учетной записи, используемой сервером. Эта ошибка также может произойти, если пароль учетной записи целевой службы отличается от того, который настроен в Центре распространения ключей Kerberos для этой целевой службы. Убедитесь, что служба на сервере и KDC настроены на использование одного и того же пароля. Если имя сервера не полностью определено, а целевой домен ($ domain $ .COM.AU) отличается от клиентского домена ($ domain $ .COM.AU), проверьте, есть ли в этих двух доменах учетные записи серверов с одинаковыми именами. или используйте полное имя для идентификации сервера.
По какой-то причине сервер, о котором он сообщает, является пользователем, запускающим службу. Первая строка:
Клиент Kerberos получил от сервера ошибку KRB_AP_ERR_MODIFIED. $ имя пользователя $.
На каждом веб-сайте (включая сбой сервера) есть исправления для этой ошибки, связанные с проблемами SPN, но всегда указывается имя сервера в ошибке. Я не могу найти указанное выше сообщение с именем пользователя.
Мы пробовали разных пользователей, и это изменило приведенную выше часть сообщения об ошибке. У всех учетных записей домена одинаковая проблема. Если мы запустим службу как локальную системную учетную запись, у нас не будет этой проблемы, но это вызывает у нас другие проблемы со службой (для других разрешений требуется учетная запись домена). У нас нет и никогда не было серверов с тем же именем, что и имена пользователей, которые мы пробовали.
Кто-нибудь видел эту проблему с появлением здесь имени пользователя раньше? Что исправить?
Все серверы - Windows 2012 (не R2).
Рад, что вы решили свою проблему, но похоже, вы не понимаете, почему то, что вы запустили, решило проблему.
Итог, SPN нужно установить на соответствующий объект. Похоже, вы установили SPN для объекта компьютера в AD, на котором запущена служба. Вот почему все заработало, если вы изменили службу на работу как SYSTEM. Но если вы измените его на запуск от имени пользователя домена, вам необходимо переместить SPN этому пользователю. И важно, чтобы ты шаг это (читай: удалить его из учетной записи компьютера), а не просто копировать Это. Дубликаты SPN сломают работу.
Нашел решение здесь: http://blogs.technet.com/b/dcaro/archive/2013/07/04/fixing-the-security-kerberos-4-error.aspx
Я побежал:
setspn -A HTTP/$servername$.$domain$.com.au $username$
и это устранило проблему