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

Way*_*oss 8 asp.net identity authorization web-config owin

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

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

我将以下XML添加到我的主web.config文件的底部,我收到一个错误:

<authorization>
  <deny users="?"/>
</authorization>
Run Code Online (Sandbox Code Playgroud)

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

Ash*_*bry 13

你是对的,没有关于将经典的ASP.Net授权与OWIN安全中间件一起使用的资源.

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

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

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

  1. Web.config:保护除匿名用户必须可用的特殊页面之外的所有内容.

http://pastebin.com/CCA1cnMF

  1. OWIN启动课程:

http://pastebin.com/3YQvKY5r

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

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

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