Аутентификация 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.

    1. Только одна учетная запись пользователя имеет доступ к базе данных Deploy, которая является TEST \ DeploySvc.

    2. Эта учетная запись пользователя является устройством чтения / записи данных и была предоставлена EXEC.

  • IIS 7.5, на котором размещены 2 веб-сайта:

    1. Deploy.Service, выполняющий операции CRUD для базы данных Deploy.

    2. Deploy.Web, на котором размещено приложение Silverlight 4, которое выполняет вызовы к Deploy.Service.

    3. Оба сайта настроены одинаково (потому что я не уверен, как еще это сделать):

      • Они используют DeployAppPool, который запускается под пользовательской учетной записью TEST \ DeploySvc.

      • Анонимная аутентификация отключена.

      • Проверка подлинности Windows включена

        1. Расширенная защита - Принять.

        2. Включить проверку подлинности в режиме ядра проверено.

        3. Поставщики просто ведут переговоры, так как я удалил 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 для учетной записи службы, чтобы она была доверенной для делегирования?

Другие вопросы по тегам