ASP.NET OWIN WebForms需要授权所有页面

时间:2014-07-07 15:56:50

标签: asp.net web-config authorization identity owin

我使用Visual Studio 2013,Update 2创建了一个新的ASP.NET WebForms应用程序。然后我更新了所有的Nu​​Get包并删除了所有OAuth的东西,因为我只想要“表单”身份验证,这就是我的意思熟悉。

我想要的是配置OWIN / ASP.NET Identity框架以便所有页面都需要授权,包括默认页面 - 因此用户应该看到的第一页是Login页面。这样做的正确方法是什么?我在Internet上找不到任何显示如何使用OWIN / ASP.NET标识保护WebForms页面的资源。

我在主web.config文件的底部添加了以下XML,出现错误:

<authorization>
  <deny users="?"/>
</authorization>

错误是:无法访问请求的页面,因为页面的相关配置数据无效。

3 个答案:

答案 0 :(得分:12)

对于使用OWIN安全中间件使用经典ASP.Net授权,没有任何资源。

我使用ASP.Net网页,所以我的实验与你的实验类似(我们都试图保护静态文件为aspx或cshtml)。

我的实验太可怕了。我正要把头撞到墙上。

最后我发现了如何让它运行起来。这就是我所做的:

  1. Web.config:保护除匿名用户必须可用的特殊页面之外的所有内容。
  2. http://pastebin.com/CCA1cnMF

    1. OWIN启动课程:
    2. http://pastebin.com/3YQvKY5r

      设置AuthenticationMode = AuthenticationMode.Active至关重要。我花了整整一天的时间来发现这一点。如果将其设置为Passive,则身份验证中间件不会填充HTTP上下文的Identity和Principal对象,并且授权模块将禁止所有请求。

      这将使经典UrlAuthorization模块根据OWIN中间件填充的标识为您工作。必须注意的是,必须安装Nuget包Microsoft.Owin.Host.SystemWeb,否则OWIN将无法与ASP.Net管道集成。

      您也可以使用这些现代的OWIN授权模块 http://leastprivilege.com/2014/06/24/resourceaction-based-authorization-for-owin-and-mvc-and-web-api/ 它们具有高度可定制性,可以保护MVC控制器,Web API控制器和静态文件。

答案 1 :(得分:3)

将以下过滤器添加到默认的App_Start / FilterConfig.cs文件(在RegisterGlobalFilters方法中)就可以了:

filters.Add(new AuthorizeAttribute());

答案 2 :(得分:1)