Не совсем четкий ответ, потому что в настоящее время я не использую AD, поэтому не могу подтвердить свой ответ. Но чтобы локализовать проблему:
я бы сначала попробовал examples . Может быть, этот тест желательно провалить. Если это не работает с примерами, я бы исследовал источник библиотеки библиотеки GNU SASL.
Вот выдержка из источника библиотеки, которая выдает эту ошибку:
maj_stat = gss_init_sec_context (&min_stat,
GSS_C_NO_CREDENTIAL,
&state->context,
state->service,
state->mech_oid,
GSS_C_MUTUAL_FLAG,
0,
&state->cb,
buf,
&actual_mech_type,
&state->token, &ret_flags, NULL);
if (maj_stat != GSS_S_COMPLETE && maj_stat != GSS_S_CONTINUE_NEEDED)
return GSASL_GSSAPI_INIT_SEC_CONTEXT_ERROR;
Как видите, вызывается функция gss_init_sec_context()
, в предложении if будут проверены только GSS_S_COMPLETE
и GSS_S_CONTINUE_NEEDED
. Но gss_init_sec_context()
имеет гораздо больше кодов состояния . Поэтому я бы изменил код библиотеки и распечатал более понятный код ошибки, почему он не работает.
Также была проблема в WINBIND / SAMBA, не знаю, используете ли вы SAMBA, которая выдает неопределенную ошибку в этой указанной c функции.