让 Apache 调用脚本来测试身份验证?

让 Apache 调用脚本来测试身份验证?

我想限制对 Apache 提供的某些目录的访问。我希望客户端必须输入用户名和密码,但我希望 Apache 接收该用户输入的用户名和密码,并将它们作为参数传递给我编写的用于进行身份验证的 Python 脚本。然后,根据所述脚本的输出,我希望 Apache 允许或拒绝访问。这可能吗?

答案1

我知道的唯一方法是使用mod_auth_externalmod_python。前者允许您实现自定义身份验证系统;后者为 Apache 提供了一个嵌入式 Python 解释器,可用于编写自定义身份验证脚本. 既不是标准模块,也不是非常流行的模块。

然而...

最简单的方法是让您的身份验证系统更新 Apache 使用的密码列表。Apache 附带了您需要的所有工具,可以从 .htpasswd 或 .htdigest 文件添加/更新/删除用户(将htpasswdhtdigest命令挂接到任何用户管理系统中应该很简单)。

或者,您可以让mod_auth(Apache 的默认身份验证系统)通过以下模块从数据库读取数据:

我个人会选择这条路线,因为它比在单独的文本文件中复制用户密码哈希值(希望您没有存储密码本身)更优雅,而且创建一个新的身份验证系统似乎是重新发明轮子。

答案2

您可以使用.htaccess 来限制对某些目录的访问。

http://www.elated.com/articles/password-protecting-your-pages-with-htaccess/

您需要创建一个 htpasswd 文件,该文件可以从 .htaccess 文件中引用

http://www.htaccesstools.com/htpasswd-generator/

Python:似乎有一个可以处理 htpasswd 文件的库:

http://pacopablo.com/wiki/pacopablo/blog/htpasswd-with-python

有关 python 和 htpasswd 的更多信息:

http://packages.python.org/passlib/lib/passlib.apache.html

我不熟悉 Python,无法为您提供完整的解决方案。不过我认为这是可能的,而且如果您熟悉 Python,只需进行一点 Google 搜索,可能就不会太复杂。

相关内容