我有一个由 IIS 使用 PHP 托管的旧版 Web 应用程序。web.config
使用根目录中的以下配置来限制对该应用程序的某些目录的访问。这使得 Windows 用户名可用作REMOTE_USER
,以便应用程序可以将该用户名映射到单个数据库以检查授权。这有效,不得更改。
<location path="lsgprog/bibliothek/adm">
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
</location>
对其他一些目录的访问也受到限制,并且使用 Windows 提供的凭据也受到限制。因此,那些其他目录也已anonymousAuthentication
禁用和windowsAuthentication
启用。不同之处在于 1. 这些设置是在 IIS 的 GUI 中进行的,以及 2. 授权实际上是针对文件系统进行检查的。这意味着目录仅对某些特殊的用户组具有读取权限,这些组和用户由某些 Active Directory 维护,并且由于该应用程序使用 Windows 身份验证,因此一切正常。用户在他们的 Windows 上进行身份验证,打开 Internet Explorer,请求站点的受限部分,IIS 获取用户名、组成员资格等,检查对文件系统中受限目录的访问并授予或拒绝它。
所有这些都是使用 IIS 的 GUI 手动配置的,我想将其迁移到web.config
. 上面已经记录了为某些目录启用 Windows 身份验证,我缺少的是如何允许/拒绝对用户和组的访问,这是文件系统部分。我已经找到了元素authorization,它看起来很像我想要的,但无论我尝试什么都行不通。
<location path="lsgprog/vfristen">
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
<system.web>
<authorization>
<deny users="*"
roles="*"
verbs="GET,HEAD,POST" />
</authorization>
</system.web>
</location>
我的期望是以上内容足以拒绝所有用户的访问,但这不起作用,任何基于 ALLOW 的方法也不起作用。我希望users
并且roles
可以简单地映射到当前请求用户的用户名和组名。我不想要的是基于表单的授权或将目录转换为“应用程序”或任何需要在web.config
.
那么,我正在尝试做的事情有可能吗?如果可以,怎么做?谢谢!