Аутентификация Windows KRB5KRB_AP_ERR_MODIFIED
Позвольте мне в предисловии сказать, что я занимаюсь этим вопросом уже полторы недели, и я не могу понять это. Я думаю, что я близок, но каждый раз, когда я так думал, я ошибался. Я просмотрел каждое сообщение на форуме, которое смог найти, но ничего не помогло.
Я просто пытаюсь заставить мое веб-приложение и соответствующую службу использовать проверку подлинности Windows, чтобы в коде я мог получить учетные данные пользователя, вошедшего в систему в данный момент, не запрашивая их, и передать их в свою хранимую процедуру базы данных через мой сервис.
Звучит достаточно легко, правда?
НЕПРАВИЛЬНО!
С запущенным WireShark я продолжаю получать ответ KRB_ERROR (30) с дальнейшими подробностями:
код ошибки: KRB5KRB_AP_ERR_MODIFIED (41)
Я попробую это завтра, но я решил опубликовать сейчас, если у кого-то есть идея, почему я продолжаю получать ошибку KRB5KRB_AP_ERR_MODIFIED, основываясь на моей текущей настройке, которую я перечислю ниже.
Вот мои текущие настройки:
Windows Server 2008 R2 Standard SP1 64-разрядная оперативная память объемом 4,00 ГБ.
Ради этого поста мы будем называть этот сервер DALDEP01.TEST.LOCAL, и на нем у меня есть следующее:
MS SQL Server 2008 R2 с базой данных, которую мы назовем Deploy.
Только одна учетная запись пользователя имеет доступ к базе данных Deploy, которая является TEST \ DeploySvc.
Эта учетная запись пользователя является устройством чтения / записи данных и была предоставлена EXEC.
IIS 7.5, на котором размещены 2 веб-сайта:
Deploy.Service, выполняющий операции CRUD для базы данных Deploy.
Deploy.Web, на котором размещено приложение Silverlight 4, которое выполняет вызовы к Deploy.Service.
Оба сайта настроены одинаково (потому что я не уверен, как еще это сделать):
Они используют DeployAppPool, который запускается под пользовательской учетной записью TEST \ DeploySvc.
Анонимная аутентификация отключена.
Проверка подлинности Windows включена
Расширенная защита - Принять.
Включить проверку подлинности в режиме ядра проверено.
Поставщики просто ведут переговоры, так как я удалил NTLM, потому что я хочу только Kerberos.
SPN настраиваются следующим образом:
C: \> setspn -l deploysvc
Зарегистрированные ServicePrincipalNames для CN=DeploySvc,OU= Учетные записи служб,DC= тест,DC= локальный:
HTTP / deploy.test.local
HTTP / развернуть
2 ответа
У меня недавно была такая же проблема.
Оказалось, что это связано с SPN. Имя участника-службы было сопоставлено с учетной записью компьютера SQL Server, а не с учетной записью службы, на которой выполнялся SQL Server.
Мы удалили и воссоздали имя участника-службы - сопоставили его с учетной записью службы под управлением SQL Server 2012R2 на хосте, и все было просто.
Это может быть вызвано дублированием SPN...
setspn -X
... покажет вам, есть ли дубликаты в вашем домене, и вам нужно будет удалить оскорбительный. Или вы можете использовать SPN Query Utility. Я также предполагаю, что вы уже изменили вкладку делегирования в AD для учетной записи службы, чтобы она была доверенной для делегирования?