Клиент SSPI требует меньше итераций, чем сервер GSSAPI
Я использую nsspi для вызова API SSPI из приложения C# для клиентской стороны. Я использую Cyrus SASL с реализацией MIT Kerberos GSSAPI на стороне сервера.
Кажется, что эти два протокола взаимодействуют друг с другом, но серверу, похоже, требуется больше проблем для клиента, чем тот, который клиент готов выполнить.
Вот журнал отладки клиента:
- Creating client context
- CONTINUE_NEEDED after calling InitializeSecurityContext, sending clientToken to the server
- received new server challenge
- OK after calling InitializeSecurityContext, out clientToken is null.
- no data to send to the server, sending NULL data
- received new server challenge
- NSspi.SSPIException: Failed to invoke InitializeSecurityContext for a client. Error Code = '0x80090301' - "The handle provided to the API was invalid.".
вот журнал отладки сервера:
- received client packet
- SASL start with GSSAPI
- GSSAPI server step 1
- received CONTINUE
- sending challenge to client
- received client packet with NULL data
- GSSAPI server step 2
- sending challenge to client
- client ended unexpectedly
Код довольно длинный, поэтому я не могу вставить его сюда целиком. Похоже, проблема заключается в количестве задействованных раундов аутентификации: клиент удовлетворен всего за один раунд, серверу, похоже, требуется больше раундов, но у клиента нет данных для его передачи.
Я использую те же флаги, что и клиентская демонстрация nsspi для создания контекста.
У кого-нибудь есть идея, почему это может происходить?