Использование примера кода в RFC 4777 - InitializeSecurityContext возвращает ошибку - PullRequest
1 голос
/ 08 июля 2011

Я пытаюсь создать единый вход для подключения к серверу System i, используя пример, опубликованный в IBM iSeries Telnet Enhancements RFC 4777 в приложении telnet клиента, написанном на C ++.

В примере кода приведены AcquireCredentialsHandle , а затем вызов InitializeSecurityContext .Вызов InitializeSecurityContext возвращает ошибку SEC_E_TARGET_UNKNOWN , возможно потому, что он не понимает имя цели, которую я передаю.

RFC 4777 говорит, что это имя цели должно бытьстрока с kbsrv400, тогда мое имя сервера полностью определено в нижнем регистре.Я интерпретировал это как "krbsrv400 / iseries.domain.com".Я пробовал различные комбинации здесь, но не могу заставить что-либо работать, и пока не нашел других примеров кода, которые используют MS SSPI API для соединения с IBM System i.

Я знаю, что настройка Kerberos включенаSystem i и домен работают нормально, так как собственный iSeries Access от IBM может войти в систему OK и выполнить вход в систему через telnet 5250, используя Kerberos.

Я работаю в Windows 7, зарегистрированной в домене.Домен настраивается в Active Directory в Windows 2008. Я использую MS Visual Studio 2005 для создания своего приложения telnet.Операционная система сервера System i - V6R1.

У кого-нибудь работает этот пример кода?

Любые советы о том, каким должен быть формат имени цели при использовании его для общения с System i?

Спасибо!

Дополнительная информация: 9/8/2011

Получите, что это работает нормально под клиентом Windows XP с управляемым доменом Windows 2003.

В RFC было две ошибки:

1) Было сказано использовать имя«krbsrv400 / spi name», но, глядя на тикет в kerbtray, который был сгенерирован при входе в систему с использованием iSeries Access, я обнаружил, что фактический формат был «krbsvr400 / spi name».

2) RFC сказал padдлина билета, отправленная в систему i, но когда я использовал Wireshark, чтобы посмотреть на telnet доступа IBM iSeries, я обнаружил, что они его не дополняют.

При изменении вышеприведенного режима в моем приложении под Windows работала система единого входа.XP.У меня все еще возникают проблемы в Windows 7.

Это другой домен (управляемый компанией, а также на серверах Windows 2008 и Windows 2003 по всему миру) и с другим iSeries.

Странно, но я могу использовать вход в Kerberos в System i Access OK, но когда я смотрю в kerbtray, я не вижу билет kerbsvr400 / ... для системы, которую я использую, как в Windows XP.Мое приложение не работает и завершается с ошибкой SEC_E_TARGET_UNKNOWN.

...