ASP.NET安全身份验证和授权的最佳实践

时间:2009-09-11 12:46:37

标签: c# asp.net security

ASP.NET网站实现不基于Windows AD的安全身份验证和授权并将帐户信息存储在数据库中的最佳做法是什么?是使用内置的Forms身份验证,库存还是自定义滚动的MembershipProvider,企业库安全块?

它们之间是否存在任何利弊,例如替换表单身份验证使得使用非ASP.NET文件的受限文件保护目录变得困难或不可能?

2 个答案:

答案 0 :(得分:4)

这是一个很大的话题,所以我会列出一些一般性的观点。

表单身份验证为您提供与会话cookie分开的身份验证cookie,该cookie可以防止被篡改并且可以加密。它的提供者模型意味着即使您推出自己的成员资格提供者,这种保护仍然存在,并且这些提供者可用于保护WCF Web服务,并允许使用silverlight进行身份验证和授权

表单身份验证还会在执行线程上创建一个IIdentity / IPrincipal对象,这意味着您可以使用CAS PrincipalPermission需求来保护可以与ASP.NET应用程序分离的方法,类甚至程序集,从而使授权成为跨领域的关注点应该是。

表单身份验证也被IIS7的文件保护机制使用,因此可以与IIS7一起使用来保护任何类型的文件,而不仅仅是那些与ASP.NET ISAPI DLL相关的文件(你可以在IIS6中做一个狂野的卡映射并通过ASP.NET管道放置所有内容,但这会对可伸缩性产生影响)

表单身份验证不允许模拟。

滚动你自己将删除所有这些。您可以使用HTTP模块开始构建它,这些模块将执行您自己的cookie加载和验证,在线程上创建主体并检查对资源的访问。您仍然需要编写数据库位,控制是否需要它们,您自己的类并将它们连接起来。

你需要做对。

有很多专业人士可以采用这种方式进行标准操作,而且它已被很多人锤击和测试,使用和滥用,滚动自己最大的骗局是你可能不像你那么聪明以为你是 - 我知道我不会这样做。

答案 1 :(得分:0)

使用表单身份验证(使用库存MembershipProvider或自定义MembershipProvider)通常被视为标准。

相关问题