通过PHP实现动态Apache身份验证

3
我希望使用Apache和PHP实现动态身份验证过程。 我的当前项目分为两部分:
1. 我有一个经典的LAMP项目正在运行,用户已经拥有登录/密码,我使用它来授予他们访问我的系统不同部分的权限。
2. 一些文档(文本、办公室等)托管在单独的DAV服务器上(相同的服务器但不同的域),用户可以直接从他们的Office程序(Word、Excel等)中编辑它们,使用Dav/ActiveX/IE组合。
我想允许在我的第一个系统注册的用户根据他们当前的权限(存储在DB中)使用不同的DAV方法。
例如,Mr X可能具有使用PUT/GET方法访问文档A的权限,但无法访问文档B。
通常,我通过使用PHP身份验证来解决这种问题,但据我所知,我的身份验证发生在Microsoft Office应用程序内部。
Office直接与Apache“交流”,因此我肯定需要覆盖.htaccess文件。我有太多的用户无法手动存储它们在.htaccess中(~10K),并且DAV服务器上有很多文件(~1K)。此外,用户的权限可能随时间而变化。
是否有一种方法生成动态htaccess文件?或者添加某种处理程序来“告诉”Apache允许或禁止用户/密码访问某些文件?
2个回答

3

您所需的是http://modauthmysql.sourceforge.net/

您可以通过.htaccess配置您的apache来对mysql数据库进行身份验证。 当然,您可以使用现有的包含用户的Mysql表。

下面是我的工作配置:

    <Directory "/u05/data">
            AllowOverride All

            Order Allow,Deny
            Allow from All
            Deny from None

            AddType application/octet-stream .rar
            AuthName "Download zone - secured"
            AuthType Basic

            AuthMYSQLEnable on
            AuthMySQLUser http_auth
            AuthMySQLPassword http_auth
            AuthMySQLDB mydatabase
            AuthMySQLUserTable users
            AuthMySQLNameField user_name
            AuthMySQLPasswordField user_password
            AuthMySQLPwEncryption crypt

            require valid-user
    </Directory>

我忘记了这个问题,并将此功能放在括号中。但就我所看到的,你的答案似乎是实现这个功能的一种非常好的方式。 - elwood

0

我想你可以设置一个 cron PHP 文件,该文件查询数据库,检索用户名及其权限,并根据该信息构建 htaccess 文件。该脚本应具有对该 htaccess 文件的写入权限,因此建议您将其放在安全位置,即您的 Web 项目之外和 www 目录之外。


这可能是最简单和最明显的方法,但文件在文件夹、子文件夹等中的组织使得生成一个处理每个文件夹和文件的用户列表的单个文件至少非常复杂。我认为我绝对需要找到一种方法来告诉Apache特定用户是否被授权访问特定文件,使用基于我的数据库的PHP代码。 - elwood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接