我相信可以将 Apache 配置为使用 SQL Server 进行身份验证。您提供 DB 连接参数和要运行的查询。我认为合同是这样的:
如果查询返回某些内容,则表示用户已经通过身份验证,如果查询结果为空,则表示用户未知。
有人知道我该如何配置它吗?
答案1
我刚刚在 Windows 2012 上为 Apache 2.4 解决了这个问题。我认为对于 Apache 2.2 来说变化很小。
取消注释 httpd.conf 中必要的 LoadModule 行:
- authn_dbd_模块
- authn_dbm_模块
- dbd_模块
与 SQL Server 建立 ODBC 连接:
ODBC 数据源管理员、系统 DNS、添加...,填写您的具体信息,并记住“名称”以备后用。
在 Apache 中配置身份验证:
DBDriver odbc
DBDParams "datasource=<Name here>,user=...,password=..."
<Location /secure>
AuthType Basic
AuthName "Secure Area"
AuthBasicProvider dbd
Require valid-user
AuthDBDUserPWQuery "SELECT '$apr1$' + PasswordSalt + '$' + Password FROM <your table> WHERE UserName = %s"
</Location>
希望它能让你朝着正确的方向前进。
答案2
我不知道 mssql 是否受支持。也许你可以将它添加到 pam 然后通过它。mod_auth_mysql 用于 mysql,mod_auth_pgsql 用于 postgresql,mod_auth_dbi 用于通用 db intefrace。