. net WebApp:创建表单签名类/方法

本文关键字:方法 表单 WebApp 创建 net | 更新日期: 2023-09-27 18:13:29

我已经在网上寻找一个更全面的解决方案的点点滴滴。我的努力没有成功,所以我打电话求救。

问题:我有一个使用windows集成身份验证的。net/c# WebApp。该应用程序是一个自定义表单应用程序,允许用户提交请求。然后将这些请求发送给主管和其他将审查和批准请求的各方。

为了审计的目的,我必须让每个主管在表格上"签名"。简单的解决方案-使用活动浏览器会话信息。用户单击"批准"按钮,该信息将被登录到数据库中(ID和日期/时间)。但审计人员不喜欢这个解决方案。他们认为这是不安全的。他们想要一个单独的凭证挑战,用户被迫输入ID和密码(并很快提供一个令牌/PIN组合代替ID/密码)。

为了在这个表单的infopath版本中满足这一点,我使用了CredUIPromptForCredentials。该代码(尽管是用c#编写的)不能直接移植到新的自定义WebApplication。我做了一些挖掘,发现了一些关于较新的CredUIPromptForWindowsCredentials的资源:

如何显示Windows登录对话框?

显示windows Vista/7的c#认证对话框

如何在c# .Net 3.5 SP1中显示身份验证对话框Windows安全自定义登录验证

这正是我想要实现的精神。对上面文章中的代码进行了很少的修改(并借鉴了我以前的InfoPath表单中的一些代码),我就能够得到一个提示和测试的工作系统。

如果有人感兴趣的话,我很乐意分享现有的代码,但它与上面引用的现有代码非常相似(几乎一字不差)。唯一的区别是一个单独的isAuthenticated方法,该方法通过实例化DirectoryEntry对象并将该对象传递给DirectorySearcher对象来测试凭据是否有效,从而实际测试凭据。

但是没有那么快。这段代码,正如我所说,工作,但只有当我在Visual studio 2012中以调试模式运行时。如果我通过输入地址访问该站点,并单击按钮"签署"表单,则该站点将旋转并且永远不会显示安全对话框。这就好像(这只是我的猜测)允许windows身份验证的IIS设置阻止了应用程序请求提示凭据。当我通过调试器运行站点时,情况并非如此。

一旦我越过了这个障碍,我必须做一些进一步的测试,看看这个代码是否支持PKI卡的身份验证。我猜它会,因为CredUI将提示传递给窗口来处理。

问题如下:1)当该方法通过IIS服务器VS在调试(本地主机)中运行时,可能会阻止windows安全窗口弹出?

2)有没有人有实现creduipromptforwindowscreential与PKI一起工作的经验?

2a)如果是这样,CredUIPromptForWindowsCredentials实际上支持PKI而不需要任何额外的代码(假设windows工作站配置了所有的硬件、驱动程序和中间件)吗?

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

菲尔·s .

. net WebApp:创建表单签名类/方法

看着你的问题,作为一个老审计员,我可以建议一个变通的方法来满足你的审计团队吗?PKI不是最安全的东西…

1)提供一个正常的LOGIN/PASSWORD表单,没有任何特殊的说明或凭证(可能被欺诈或"在飞行中"被盗)。最好在此页面中使用HTTPS。

2)一旦家伙告知数据,通过短信(即时消息)的2因素认证。成本其实无关紧要(参见《Twilio》)。显然,除了登录名/密码之外,每个人都必须在数据库中有他的手机。

3)这样你可以确保主管确实是批准/签署页面的人。

这是一种更安全的模式,正因为如此,Facebook、Google Mail和其他公司都在使用这种方法。

对不起,我知道我没有按你的要求回答你,但这比你的提议更安全。好运!