AcceptSecurityContext (Kerberos) возвращает SEC_E_LOGON_DENIED - PullRequest
2 голосов
/ 19 марта 2010

Я пытаюсь написать простое приложение, которое выполняет аутентификацию Kerberos (пока нет взаимной аутентификации).

Операционная система - Windows Server 2003, стандартная версия.Я установил Active Directory и создал SPN с помощью инструмента setspn.

AcquireCredentialsHandle возвращает SEC_E_OK как на клиенте, так и на сервере.

InitializeSecurityContext на стороне клиента возвращает SEC_E_OK.

AcceptSecurityContext onсерверная часть возвращает SEC_E_LOGON_DENIED.

Я уверен, что в моем коде нет ничего плохого, поскольку такое же поведение я вижу при использовании примера приложения из следующей статьи MSDN: http://msdn.microsoft.com/en-us/magazine/dvdarchive/bb985043.aspx

Так что я думаю, что тамчто-то не так в моей настройке.Но я не могу узнать что.Может быть, я что-то пропустил в настройке SPN?Любая помощь приветствуется.

С уважением, Дэвид.

1 Ответ

3 голосов
/ 20 июня 2010

Да, проблема была в следующем:

Скажем, имя вашего компьютера - COMP, имя домена NetBios - DOMAIN, SPN, который вы хотите зарегистрировать, - MyService / COMP.

Команда "setspn -A MyService / COMP COMP" регистрирует имя участника-службы для учетной записи SYSTEM! И когда ваш процесс, принадлежащий другой учетной записи (скажем, «Администратор»), хочет выступать в качестве сервера для этого имени участника-службы, он понимает, что может произойти сбой.

Вы можете запустить свой сервер как SYSTEM (Google для того, как это сделать) или (что лучше) зарегистрировать SPN для учетной записи администратора (или любой другой), используя следующую команду: setspn -A MyService / COMP DOMAIN \ Administrator

...