我使用Visual Studio 2013,Update 2创建了一个新的ASP.NET WebForms应用程序。然后我更新了所有的NuGet包并删除了所有OAuth的东西,因为我只想要“表单”身份验证,这就是我的意思熟悉。
我想要的是配置OWIN / ASP.NET Identity框架以便所有页面都需要授权,包括默认页面 - 因此用户应该看到的第一页是Login页面。这样做的正确方法是什么?我在Internet上找不到任何显示如何使用OWIN / ASP.NET标识保护WebForms页面的资源。
我在主web.config文件的底部添加了以下XML,出现错误:
<authorization>
<deny users="?"/>
</authorization>
错误是:无法访问请求的页面,因为页面的相关配置数据无效。
答案 0 :(得分:12)
对于使用OWIN安全中间件使用经典ASP.Net授权,没有任何资源。
我使用ASP.Net网页,所以我的实验与你的实验类似(我们都试图保护静态文件为aspx或cshtml)。
我的实验太可怕了。我正要把头撞到墙上。
最后我发现了如何让它运行起来。这就是我所做的:
设置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)
旧的.NET表单身份验证HTTP模块已不复存在,已被OWIN Forms中间件取代。
以下是一些可以帮助您入门的文章。