Hello Everybody
I need help We are trying to make a new SASL mechanism to enable ldap authentication via third-party password-validation tool. User Authentication is routed to the tool which might ask the client for a new password to be keyed in. We succeeded handling all the conversation though in a unseemly fashion for the new password is echoed (which, of course, is not welcome by the customer). Our 3 main keys have been: 1) enabling SSH interaction with ChallengeResponseAuthentication=yes in sshd_config 2) enabling PAM_LDAP via etc/pam.d/system-auth 3) enabling the pam_conv routine by the following mechanism code: echo_result = _plug_challenge_prompt(params->utils, SASL_CB_ECHOPROMPT, NULL, promptText, (const char**)&text->echoresponse, prompt_need); if ((echo_result != SASL_OK) && (echo_result != SASL_INTERACT)) return echo_result; /* free prompts we got */ if (prompt_need && *prompt_need) { params->utils->free(*prompt_need); *prompt_need = NULL; } /* if there are prompts not filled in */ if (echo_result == SASL_INTERACT) { /* make the prompt list */ result = _plug_make_prompts(params->utils, prompt_need, NULL, NULL, NULL, NULL, NULL, NULL, NULL, promptText, NULL, NULL, NULL, NULL); if (result != SASL_OK) return result; return SASL_INTERACT; } /* the application provided us with a new password so use it */ if (text->echoresponse) { *clientout = text->echoresponse; *clientoutlen = strlen(text->echoresponse); } Now what we expected was just to turn SASL_CB_ECHOPROMPT to SASL_CB_NOECHOPROMPT to reach our goal The result is the pam_conv routine returns empty response to sasl and the mech_client_step function keeps being called (looping) by the glue code. In human terms the client keeps giving his new password and still in clear (echoprompted) . Do you have any idea on what I'm missing? Is it available any reference about chalprompt_cb function and its parameters used by _plug_challenge_prompt? We also tried with _plug_get_password without any outcome Any help would be appreciated Many many thanks Francesco Grossi