<-
Apache HTTP 服务器 2.4 > Apache模块mod_authz_dbd

Apache模块mod_authz_dbd

描述:组授权和使用SQL登录
状态:延期
模块标识符:authz_dbd_module
源文件:mod_authz_dbd.c
兼容性:在Apache 2.4和更高版本中可用

摘要

此模块提供授权功能,以便可以通过组成员身份来允许或拒绝经过身份验证的用户访问网站的某些部分。类似的功能是通过提供mod_authz_groupfilemod_authz_dbm,与此模块查询一个SQL数据库,以确定用户是否是一个组的成员的异常。

该模块还可以提供数据库支持的用户登录/注销功能。与结合使用时,这些可能最有价值mod_authn_dbd

该模块依赖于mod_dbd指定后端数据库驱动程序和连接参数,并管理数据库连接。

支持Apache!

主题

指令

错误修正清单

也可以看看

最佳

需求指令

Require 在授权阶段使用Apache的指令,以确保允许用户访问资源。mod_authz_dbd延长授权类型的dbd-groupdbd-logindbd-logout

从v2.4.8开始,DBD require指令支持表达式

需要dbd-group

该指令指定用户获得访问权限所需的组成员身份。

Require dbd-group team
AuthzDBDQuery "SELECT group FROM authz WHERE user = %s"

需要dbd登录

该指令指定要运行的查询,指示用户已登录。

Require dbd-login
AuthzDBDQuery "UPDATE authn SET login = 'true' WHERE user = %s"

需要dbd注销

该伪指令指定要运行的查询,指示用户已注销。

Require dbd-logout
AuthzDBDQuery "UPDATE authn SET login = 'false' WHERE user = %s"
最佳

数据库登录

除了检查组成员资格的标准授权功能之外,该模块还可以通过数据库支持的登录/注销功能提供服务器端用户会话管理。具体来说,每当用户访问指定的URL时,它就可以更新数据库中用户的会话状态(当然,这取决于提供必要凭据的用户)。

这通过定义两种特殊Require类型来起作用 : Require dbd-loginRequire dbd-logout。有关用法的详细信息,请参见下面的配置示例。

最佳

客户端登录集成

一些管理员可能希望实现与该模块提供的服务器端登录/注销功能协同工作的客户端会话管理,例如,通过在用户登录或注销时设置或取消设置HTTP cookie或其他此类令牌, 。

为了支持这种集成,请mod_authz_dbd导出一个可选的挂钩,该挂钩将在数据库中更新用户状态时运行。然后,其他会话管理模块可以使用该钩子来实现启动和结束客户端会话的功能。

最佳

配置示例

# mod_dbd configuration
DBDriver pgsql
DBDParams "dbname=apacheauth user=apache pass=xxxxxx"

DBDMin  4
DBDKeep 8
DBDMax  20
DBDExptime 300

<Directory "/usr/www/my.site/team-private/">
  # mod_authn_core and mod_auth_basic configuration
  # for mod_authn_dbd
  AuthType Basic
  AuthName Team
  AuthBasicProvider dbd

  # mod_authn_dbd SQL query to authenticate a logged-in user
  AuthDBDUserPWQuery \
    "SELECT password FROM authn WHERE user = %s AND login = 'true'"

  # mod_authz_core configuration for mod_authz_dbd
  Require dbd-group team

  # mod_authz_dbd configuration
  AuthzDBDQuery "SELECT group FROM authz WHERE user = %s"

  # when a user fails to be authenticated or authorized,
  # invite them to login; this page should provide a link
  # to /team-private/login.html
  ErrorDocument 401 "/login-info.html"

  <Files "login.html">
    # don't require user to already be logged in!
    AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s"

    # dbd-login action executes a statement to log user in
    Require dbd-login
    AuthzDBDQuery "UPDATE authn SET login = 'true' WHERE user = %s"

    # return user to referring page (if any) after
    # successful login
    AuthzDBDLoginToReferer On
  </Files>

  <Files "logout.html">
    # dbd-logout action executes a statement to log user out
    Require dbd-logout
    AuthzDBDQuery "UPDATE authn SET login = 'false' WHERE user = %s"
  </Files>
</Directory>
最佳

AuthzDBDLoginToReferer 指令

描述:确定是否在成功登录或注销时将客户端重定向到引荐页面(如果存在Referer请求标头)
句法:AuthzDBDLoginToReferer On|Off
默认:AuthzDBDLoginToReferer Off
内容:目录
状态:延期
模块:mod_authz_dbd

Require dbd-login或 结合使用Require dbd-logout,这提供了将客户端重定向回引荐页(RefererHTTP请求标头中的URL ,如果存在)的选项。当没有Referer头时, AuthzDBDLoginToReferer On将被忽略。

最佳

AuthzDBDQuery 指令

描述:为所需的操作指定SQL查询
句法:AuthzDBDQuery query
内容:目录
状态:延期
模块:mod_authz_dbd

AuthzDBDQuery指定SQL查询来运行。查询的目的取决于有效的 Require指令。

在所有情况下,执行SQL查询时,用户ID都将作为单个字符串参数传递。可以使用%s格式说明符在查询语句中引用它。

最佳

AuthzDBDRedirectQuery 指令

描述:指定查询以查找用户的登录页面
句法:AuthzDBDRedirectQuery query
内容:目录
状态:延期
模块:mod_authz_dbd

指定一个可选的SQL查询,该查询在成功登录(或注销)后用于将用户重定向到特定于该用户的URL。执行SQL查询时,用户ID将作为单个字符串参数传递。可以使用%s格式说明符在查询语句中引用它。

AuthzDBDRedirectQuery "SELECT userpage FROM userpages WHERE user = %s"

查询语句返回的第一行的第一列值应该是一个字符串,其中包含要将客户端重定向到的URL。随后的行将被忽略。如果未返回任何行,则不会重定向客户端。

请注意,AuthzDBDLoginToReferer如果两者都设置,则优先。

可用语言: zh  |  fr 

最佳

注释

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。