如何在 Apache 中接受多种身份验证选项?

如何在 Apache 中接受多种身份验证选项?

我想保护我的 VirtualHost 中的路径,但允许用户使用多种身份验证选项(例如mod-auth-casmod-auth-openidmod-auth-digest。)如何设置虚拟主机定义以允许auth-type同一位置有多个?

答案1

多种身份验证类型的问题在于它们往往具有不可调和的协议。您可以尝试Shibboleth 文档,将所有内容放在一个子目录中,为您想要支持的每种身份验证类型创建到该目录的符号链接,然后为不同的身份验证类型配置每个符号链接位置。

<Location /basic>
    AuthType Basic
    AuthUserFile /path/to/.htpasswd
    require valid-user
</Location>
<Location /cas>
    AuthType CAS
    require valid-user
</Location>
<Location /openid>
    AuthOpenIDEnabled On
    require valid-user
</Location>

答案2

我遇到了几乎相同的情况,解决如下:

在服务器配置级别,在 apache2.conf 中(假设基于 Debian 的发行版)

<AuthnProviderAlias method1 auth1_name  >
# config options
# ...
</AuthnProviderAlias>

<AuthnProviderAlias method2 auth2_name  >
# config options
# ...
</AuthnProviderAlias>

在虚拟主机特定的配置文件中:

<VirtualHost *>
# config options
# ...

<Location /your_location>
# config options
AuthBasicProvider auth1_name auth2_name
# other needed config options
# ...
</Location>
</VirtualHost>

通过这种方式,您可以在同一个 Location 指令中为不同的 VirtualHosts 使用具有不同名称的不同授权/身份验证方法

有关我的解决方案的更多详细信息,请参阅我的一篇简短博客文章:链接文本

HTH,再见 :) Gianluca

答案3

你有没有尝试过 ”满足任何“?

答案4

另一种解决方案是根据 HTTP 标头的内容使用以下子句来区分身份验证:

 <If "%{HTTP:Authorization} =~ /^Basic/">
   AuthType Basic
   AuthUserFile /path/to/.htpasswd
   Require valid-user
 </If>
 <Elseif "%{HTTP:Authorization} =~ /^Bearer/">
   AuthOpenIDEnabled On
   Require valid-user
 </Elseif>
 <Else>
   AuthType CAS
   Require valid-user
 </Else>

相关内容