计算机 · 2021年12月19日 0

apache服务器认证与授权

官方文档页

认证与授权

  • 认证(Authentication) 确认谁是谁;
  • 授权(Authorization) 准许某人干什么

enable相关模块和指令

需要从以下三组中每组至少打开一个模块:

  • 认证类型
    • mod_auth_basic
    • mod_auth_digest
  • Authentication Provider
    • mod_authn_anon
    • mod_authn_dbd
    • mod_authn_dbm
    • mod_authn_file
    • mod_authnz_ldap
    • mod_authn_socache
  • 授权
    • mod_authnz_ldap
    • mod_authz_dbd
    • mod_authz_dbm
    • mod_authz_groupfile
    • mod_authz_host
    • mod_authz_owner
    • mod_authz_user
  • Authorization

除了这些模块,还有 mod_authn_core和mod_authz_core模块,这两个模块实现了上面模块的核心指令。所以为了简单,需要认证服务就使用authn_core,需要授权服务就使用authz_core,如果两个都需要就都使用。

如果想要数据真正安全,那么除了认证之外最好加上使用SSL。

如果是通过 .htaccess 文件来控制指定文件/文件夹的访问权限的话,那么需要在服务器配置文件里加上下面这句

AllowOverride AuthConfig

这样就可以在个*.htaccess*文件里填写不同的内容达到不同的控制效果了。

添加通过密码认证服务的基本过程

首先需要一个存储密码的文件,不要和网页放在同一目录,以免别人下载密码文件。然后工具htpasswd向该密码文件添加用户名和密码即可。

htpasswd -c <passwd-file> username

然后在对应的*.htaccess文件或者服务器的配置文件里相应的<Directory “/path/to/your/directory”>*段里加上如下的配置语句:

AuthType Basic
AuthName "Restricted Files"
# {Following line optional}
AuthBasicProvider file
AuthUserFile "/usr/local/apache/passwd/passwords"
Require user rbowen

file是AuthBasicProvider的默认值,所以该行其实是多余的。

文档中的剩余内容

对于我来说暂时不需要,有空再来研究:)。