【问题标题】:Intranet site asking for credentials when using anonymous access使用匿名访问时要求提供凭据的 Intranet 站点
【发布时间】:2015-01-11 04:09:09
【问题描述】:

我正在开发一个通过 ASP.NET WebAPI 托管 RESTful 服务的 Intranet 站点。

我遇到了一个问题,即所有浏览器(Chrome、Firefox 和 IE)都显示请求凭据的登录提示。我在启用匿名访问的 Windows 7 Home Premium 上的 IIS 7.5 中托管该站点。

根 URL http://localhost/RootAPI/ 应该对匿名用户可见,但私有路由,例如http://localhost/RootAPI/Invoicehttp://localhost/RootAPI/Order 只能通过 [Authorize] 属性访问通过身份验证的用户。一旦我解决了这个问题,我打算通过 AngularJS 使用 WebAPI 调用来控制身份验证过程。

我的网站使用 ASP.NET v4.0 应用程序池标识,并且我已为该用户分配了对该应用程序文件夹的读取权限。

我还将http://localhost 添加到 IE 中的受信任站点列表中,并在 IE 的高级选项中选中“允许集成 Windows 身份验证”。此外,在 Intranet 站点的自定义级别中检查了“使用当前用户名和密码自动登录”,问题仍然存在。

我的 web.config 文件中有这个。

<authentication mode="None" />
<identity impersonate="true" />

查看C:\inetpub\logs\LogFiles\W3SVC1 下的日志文件时,它不显示用户名(我希望看到匿名用户名)并显示 HTTP 状态 401。

我在这个令人沮丧的问题上花了两天时间,但我无法阻止登录提示的出现。谁能指出我做错了什么的正确方向?

【问题讨论】:

    标签: iis-7.5 asp.net-web-api


    【解决方案1】:

    在发现自定义授权过滤器正在执行并检查控制器是否用[AllowAnonymousAttribute()] 装饰后,我设法弄清楚了这一点,但事实并非如此。

    将此属性添加到根控制器后,我不再收到登录提示。

    这是添加属性过滤器后根控制器的样子:

    [AllowAnonymousAttribute()]
    public class RootController : ApiController
    {
        ...
    }
    

    根页面现在按预期显示。

    【讨论】:

      猜你喜欢
      • 2021-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      • 1970-01-01
      • 2019-09-13
      • 2020-08-03
      相关资源
      最近更新 更多