【问题标题】:Allow anonymous access to specific URL in web.config允许匿名访问 web.config 中的特定 URL
【发布时间】:2017-02-22 19:22:49
【问题描述】:

该站点在 IIS 7.5 上运行 PHP,并且通过 web.config 将对该站点的访问限制为 Active Directory 组,如下所示:

<security>
    <authorization>
        <remove users="*" roles="" verbs="" />
        <add accessType="Allow" roles="DOMAIN\AD-GROUP" />
    </authorization>
 </security>

唯一要做的 URL 重写是将大多数 URL 发送到 index.php,然后 CodeIgniter 处理路由。

但是,需要向不在该特定 Active Directory 组中的用户公开特定的 URL 模式。这不是一个文件,我相信&lt;location&gt; 标签用于;它需要基于 URL。

附加上下文:这是针对单个页面/AngularJS 应用程序中的 URL 模式。例如:在项目管理应用程序中,应用程序的用户可以创建任务、上传文件、发布注释(例如,http://domain/#/project/1234/tasks)。所有这些用户都在AD-GROUP 组中。对于每个项目,都有一个项目的封面页,可以分发给组织内的非用户 (http://domain/#/project/1234/public)。他们不会在那个特定的广告组中,但他们需要查看那个页面。

鉴于它基于 URL 中的哈希值,这是否可以在 web.config 中执行?如果不是,如果不是 web.config,那么基于 AD 组进行限制的另一种方法是什么?

【问题讨论】:

    标签: php angularjs iis web-config iis-7.5


    【解决方案1】:

    我认为&lt;location&gt; 仍然是要走的路。根据https://www.iis.net/learn/get-started/planning-your-iis-architecture/deep-dive-into-iis-configuration-with-iis-7-and-iis-8 的文档,路径可能不仅仅是本地文件

    位置标签的主要属性是“路径”。这些值可以是:

    ...

    • “sitename/application/vdir”:特定站点的特定应用程序的特定虚拟目录。

    【讨论】:

    • 我无法让它工作。任何将正则表达式作为路径放入的尝试都会导致有关无效字符的错误。
    • @MelissaAvery-Weir,是的,这不适用于与 RegExp 匹配的路径。如果您不能在 URL 中放置固定前缀,我认为下一个最简单的解决方案是安装 URL Rewrite module 并使用它将所有 URL 映射到前缀物理文件夹并为该文件夹配置 location。跨度>
    • 所有传入的 URL 都已映射到 index.php 文件,以便 CodeIgniter 驱动路由。进一步的研究表明这比我希望的更不可能:需要安全异常的 URL 位于 URL 的哈希部分(对于 AngularJS)。我什至不认为散列可以到达服务器。你不能对它们进行 URL 重写。
    • 所以您的意思是您希望example.com/index.php#secure 受到限制,但example.com/index.php#public 对所有人都允许?我不认为这是可能的,但我不确定你为什么有这样一个奇怪的设计。当用户打开这两个页面之一时,服务器应该如何区分要服务哪一个?如果仅在客户端进行区分,您可能仍然可以将数据请求 (AJAX) 发送到不同的 URL,其中一些将是公开的,而另一些则需要授权。
    • 我更新了问题以提供更多详细信息。这是一个完整的 SPA/AngularJS 应用程序,所以设计并不太奇怪。 :-) 感谢您帮助我解决这个问题!这是一个奇怪的问题。
    猜你喜欢
    • 1970-01-01
    • 2012-04-16
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 2014-09-02
    • 2019-11-23
    相关资源
    最近更新 更多