【发布时间】:2011-10-29 10:50:19
【问题描述】:
我现在正在编写一个内部 Web 应用程序(使用 ASP.Net Web 窗体),它提出了一个奇怪的问题。我必须能够模拟当前登录的 Windows 用户,并根据他们的 Windows 身份验证执行命令以登录.. 并且......如果他们没有在我必须使用的应用程序中设置 Windows 身份验证登录他们,我必须能够接受用户名和密码。我还必须在 .Net 4.0 中编写应用程序,并尽可能保护它。我通过不在 web.config 中使用 Windows 身份验证或表单身份验证来实现此目的,而是设置会话变量以防止用户访问 Web 应用程序中的页面而不是登录。我通过创建一个奇怪的名称会话变量来做到这一点使用基于用户名(Windows 身份验证与否)的值,然后是秘密会话变量。秘密变量在 web.config 中作为 256 位加密字符串,我在其中解密,并设置为会话秘密。为了加载页面,第一个会话变量不能为空,第二个变量必须等于解密的密钥值......如果变量没有通过检查,它将它们重定向到登录页面。我在 Web 应用程序中的每个页面、通用处理程序和 Web 服务方法上都进行了设置。我在几分钟没有活动后使会话超时,并在注销时将所有会话变量设置为空,并使所有 cookie 过期。 (我也禁用了所有缓存)。
我的问题是......这是否提供与表单身份验证相当的安全性?我一直使用Forms认证,但是这里用不上。如果我这样做了,用户将不得不重新配置 IIS 和 web.config 中的设置以切换登录过程(据我所知,您不能同时使用 Forms 身份验证和 windows 身份验证来管理页面和其他 Web 的安全性资源)。使用上述方法,我可以做到两全其美,但我对我的方法的安全性感到好奇。除了使用表单身份验证之外,我还可以在这里实现什么来确保最大的安全性?不使用Forms认证是否可以实现同样级别的安全性?
感谢您提前提供任何见解!
【问题讨论】:
-
哇,几年后...我觉得问这个问题很愚蠢。当然,与表单身份验证#facepalm 相比,我所描述的都是废话。我最终将 Forms Auth 与 Kerberos 和自定义成员资格提供程序一起使用来完成工作。
标签: asp.net vb.net session authentication webforms