我有一个遗留应用程序,通过网络异步接收用户名/密码请求.由于我已将用户名和密码存储为变量,因此在Linux(Debian 6)上使用PAM进行身份验证的最佳方法是什么?
我已经尝试编写自己的会话功能,但我不确定获取密码的最佳方法.我已经考虑将它存储在appdata中并从pam_conv结构中引用它,但几乎没有关于如何做到这一点的文档.
是否有更简单的方法来验证用户,而没有过多的会话功能?我也无法成功使用pam_set_data,我不确定这是否合适.
这是我正在做的事情:
user = guiMessage->username;
pass = guiMessage->password;
pam_handle_t* pamh = NULL;
int pam_ret;
struct pam_conv conv = {
my_conv,
NULL
};
pam_start("nxs_login", user, &conv, &pamh);
pam_ret = pam_authenticate(pamh, 0);
if (pam_ret == PAM_SUCCESS)
permissions = 0xff;
pam_end(pamh, pam_ret);
Run Code Online (Sandbox Code Playgroud)
对话函数的初始尝试导致(密码被硬编码用于测试):
int
my_conv(int num_msg, const struct pam_message **msg, struct pam_response **resp, void *data)
{
struct pam_response *aresp;
if (num_msg <= 0 || num_msg > PAM_MAX_NUM_MSG)
return (PAM_CONV_ERR);
if ((aresp = (pam_response*)calloc(num_msg, sizeof *aresp)) == NULL)
return (PAM_BUF_ERR);
aresp[0].resp_retcode …Run Code Online (Sandbox Code Playgroud) 我有一个用纯Ruby编写的命令行(NON-RAILS)应用程序,我正在通过Cucumber和RSpec进行开发。它遵循lib,bin,spec和feature目录的典型应用程序层次结构。
到目前为止,我遵循的传统过程是编写失败的Cucumber功能/方案,然后放到RSpec驱除支持的lib文件,然后使方案通过。
不幸的是,在淘汰“ bin / my_application.rb”中的主应用程序入口点时,这似乎并不那么简单。对我而言,主要问题是我没有在RSpec中描述类,而是一种顺序的Ruby脚本,用于通过命令行参数和选项管理应用程序的类和初始化。
“ bin / my_application.rb”只是一个由外壳程序执行的小型包装程序,用于解析命令行选项并将它们作为初始化程序选项传递给我的主应用程序类。我仍然想测试bin脚本的行为(例如MyApp.should_receive(option_a).with(parameter))。
有什么建议/想法/建议吗?这是驱逐命令行Ruby脚本行为的正常测试策略吗?
提前致谢。