I'm fairly sure that ret = krb5_libdefault_string(context, realm, KRB5_CONF_PREFERRED_PREAUTH_TYPES, &preauth_types); is optimistic preauth.. At least Apple was assuming that code generated optimistic preauth.