Asp.net 表单身份验证是完全必要的吗?

Asp.net 表单身份验证是完全必要的吗?,asp.net,vb.net,session,authentication,webforms,Asp.net,Vb.net,Session,Authentication,Webforms,我现在正在编写一个内部web应用程序(使用ASP.NETWeb表单),它提出了一个奇怪的问题。我必须能够模拟当前登录的windows用户,并根据其windows身份验证执行命令以登录。。而且。。。如果他们没有在我用来登录他们的应用程序中设置Windows身份验证,我必须能够接受用户名和密码。我还必须在.NET4.0中编写应用程序,并尽可能保护它。我通过在web.config中不使用Windows身份验证或表单身份验证,而是设置会话变量来防止用户访问web应用程序中的页面,而不是登录。为此,我创建

我现在正在编写一个内部web应用程序(使用ASP.NETWeb表单),它提出了一个奇怪的问题。我必须能够模拟当前登录的windows用户,并根据其windows身份验证执行命令以登录。。而且。。。如果他们没有在我用来登录他们的应用程序中设置Windows身份验证,我必须能够接受用户名和密码。我还必须在.NET4.0中编写应用程序,并尽可能保护它。我通过在web.config中不使用Windows身份验证或表单身份验证,而是设置会话变量来防止用户访问web应用程序中的页面,而不是登录。为此,我创建了一个名称奇怪的会话变量,该变量的值基于其用户名(windows auth与否),然后创建了一个秘密会话变量。secret变量在web.config中是一个256bit加密字符串,我在其中解密并设置为会话密钥。为了加载页面,第一个会话变量不能为空,第二个变量必须等于解密的密钥值。。。如果变量没有通过检查,它会将它们重定向到登录页面。我在web应用程序中的每个页面、通用处理程序和webservice方法上都设置了这个。我在几分钟无活动后使会话超时,在注销时,我将所有会话变量设置为“无”,并使所有cookie过期。(我还禁用了所有缓存)

我的问题是。。。这是否提供了与表单身份验证相当的安全性?我一直使用表单身份验证,但不能在这里使用。如果我这样做了,用户将不得不重新配置IIS和web.config中的设置以切换登录过程(据我所知,您不能同时使用表单身份验证和windows身份验证来管理页面和其他web资源的安全性)。使用上述方法,我可以做到两全其美,但我对我的方法的安全性感到好奇。除了使用表单身份验证之外,我还可以在这里实现什么来确保最大的安全性?是否可以在不使用表单身份验证的情况下实现相同级别的表单身份验证安全性

感谢您提前提供的任何见解

这是否提供了与表单身份验证相当的安全性

当涉及到安全时,第一条规则是不要重新发明轮子,除非你必须这样做。您提出的任何家庭烘焙解决方案都有可能像提供的Windows或Forms身份验证一样安全。问题在于,本土解决方案很少能达到这种潜力。他们可能测试得很好,但细微的错误可能仍然存在。你不想一年后发现你六个月前被黑客攻击了。现有解决方案已经在数百万个应用程序中测试和使用,而您的解决方案将在一个应用程序中使用,最多由少数人测试

快速搜索表明,在同一个应用程序中实现Windows和Forms身份验证是可能的,因此我将进一步研究


还可以按照建议将凭据存储在会话中的安全漏洞中。同意上面的说法,尽管听起来你需要的只是windows身份验证。谢谢你的建议!唯一的问题是。。。将两者混合在一起是非常棘手的。。。也许我会再试一次,但这并不像他们在那篇文章(我已经读过并尝试过)中所说的那样充分。问题还在于,我使用的是一个第三部分程序,我必须使用。。将用户身份验证到站点中。该程序允许windows身份验证(需要模拟)或UN和PW。在.Net 4.0 framework和windows auth中使用模拟,并允许用户在不输入域凭据的情况下进入登录屏幕,这也是非常重要的quirky@TheCodeKing .. 我正在web.config中将creds存储为256bit加密字符串。他们必须解密会话名称(硬编码),然后解密密码才能进入。。。可能有个洞,怎么能绕过它。。。无论如何,谢谢大家的建议。。我只需要想出一些其他的方法来做到这一点,因为将身份验证与这个第三方应用程序、.net 4.0和模拟混合使用的行为不够一致。基于会话的身份验证或授权的问题是,它容易被会话劫持、会话重播,中间人攻击,可能使黑客破坏帐户。不需要解密。自定义身份验证总是一个坏主意,它不会像内置实现那样安全。为什么不自己使用Windows auth或forms auth?任何一个都允许您创建新用户。@wakurth-您可以创建自己的成员资格提供程序,该提供程序继承自现有提供程序。这将有一些好处,滚动你自己没有那么多的缺点。哇,几年后。。。问这个问题我觉得很傻。当然,与表单身份验证相比,我所描述的是垃圾。最后,我使用带有Kerberos的Forms Auth和自定义成员资格提供程序来完成这项工作。