PAM“pam_unix.so”身份验证有时会失败
Posted
技术标签:
【中文标题】PAM“pam_unix.so”身份验证有时会失败【英文标题】:PAM "pam_unix.so" authentication sometimes fails 【发布时间】:2013-03-12 16:58:49 【问题描述】:我在使用 PAM 时遇到了一些问题。我有一个使用 PAM 进行身份验证的 tomcat webapp。在安装过程中,我们在 /etc/pam.d 中创建了指向 /etc/pam.d/sshd 文件的符号链接。这一直有效。
最近我为用户添加了一种对每个请求进行身份验证的方法(而不是使用 JSESSIONID cookie)。添加这个是因为我们需要定期将一些数据批量加载到监控应用程序中,并且使用 Basic Auth 很容易。
如果我反复卷曲我的 web 服务(比如每秒 10 次),那么 PAM 每隔一段时间就会失败。这种情况大约每 500 次发生一次,尽管我的客户声称它每隔几次就会发生一次(请注意,它们是远程运行的,尽管我不明白为什么这很重要)。
我已将我的符号链接 pam 配置替换为以下最小配置:
#%PAM-1.0
auth sufficient pam_unix.so audit
auth required pam_deny.so
我也将此添加到我的 /etc/syslog.conf 中
*.debug /var/log/debug.log
可以在 debug.log 中找到唯一适用的日志消息:
Mar 12 09:49:32 arques java: pam_unix(foo:auth): unable to obtain a password
Mar 12 09:49:32 arques java: pam_unix(foo:auth): auth could not identify password for [root]
如何进一步调试?我试过了:
-
使用不同的主机。一种是全新安装
我已关闭 nscd 服务
【问题讨论】:
【参考方案1】:我在使用 PAM 进行身份验证的 Java 应用程序中遇到了类似的问题。目前,我猜测问题出在 CentOS 6.4 上的分布式 Java PAM 绑定实现中。我不再可以访问该系统(但我仍在尝试解决此问题),因此我无法提供 JDK 版本等详细信息。
我最终的解决方案是粗暴地混合 PAM:
#%PAM-
auth sufficient pam_debug.so
为了更明确,您可以改用“pam_permit.so”。 基本上就是这样。然后将验证任何有效用户,无论是否使用密码。啊。
我正在继续研究更好的答案。
【讨论】:
最终我得出结论,我的 PAM 配置很好。我发现可行的解决方案是通过核心身份验证系统路由身份验证(这是一个 Seam 应用程序,所以那里有一个奇怪的间接),而不是直接调用身份验证函数(即直接调用 libpam.jar 的东西)。我不确定为什么会这样,但确实如此。以上是关于PAM“pam_unix.so”身份验证有时会失败的主要内容,如果未能解决你的问题,请参考以下文章