Security Winforms应用程序作为";“离线模式”;web应用程序的

Security Winforms应用程序作为";“离线模式”;web应用程序的,security,c#-3.0,forms-authentication,desktop-application,offline-mode,Security,C# 3.0,Forms Authentication,Desktop Application,Offline Mode,我在这里看到了类似的问题,但没有一个真正解决我的情况,以下是设置: 我有一个带有表单身份验证(SqlMembershipProvider)的ASP.NET应用程序,用户可以在其中提交审核结果 我想创建一个轻量级桌面应用程序(我们称之为MyApp)(离线使用),这样用户可以在没有互联网连接的情况下提交审计结果 以下是必备品: 根据my SqlMembershipProvider对用户进行身份验证(匿名用户无法提交审核结果) 仅向用户询问一次凭据(当他/她打开MyApp时)(我可以保存身份验证令牌,

我在这里看到了类似的问题,但没有一个真正解决我的情况,以下是设置:

我有一个带有表单身份验证(SqlMembershipProvider)的ASP.NET应用程序,用户可以在其中提交审核结果

我想创建一个轻量级桌面应用程序(我们称之为MyApp)(离线使用),这样用户可以在没有互联网连接的情况下提交审计结果

以下是必备品:

  • 根据my SqlMembershipProvider对用户进行身份验证(匿名用户无法提交审核结果)
  • 仅向用户询问一次凭据(当他/她打开MyApp时)(我可以保存身份验证令牌,但在某些情况下,MyApp将安装在多个用户使用的笔记本电脑上,因此每次打开MyApp时,我都必须强制用户登录)
  • 不要以纯文本形式存储密码(如果在打开MyApp时用户处于脱机状态,我希望在连接可用时保存凭据以对用户进行身份验证)-不确定这是否可行
  • 一旦我弄明白上面的三件事,剩下的就很简单了

    下面是一个简单的场景,以防上述情况令人困惑:

  • MyApp安装在办公笔记本电脑上,人们旅行时随身携带
  • 2名用户前往偏远地区(无互联网),并进行2次单独审计
  • 用户1打开MyApp,提供其用户/通行证(请参见必备项中的#2),提交3项调查结果(我将保存调查结果以及用户凭据,以验证用户身份,并在连接可用时提交调查结果)-请参见必备项中的#1和#3
  • 用户2打开MyApp,并执行与用户1在步骤3中执行的相同例程
  • 2天后,他们回到办公室,互联网可用,第3步和第4步的调查结果代表各自的用户提交到我的web应用程序
  • 我曾研究过微软同步框架,但这似乎是对我所做工作的一种过度使用(我也不确定它是否能满足我的必备需求)

    我愿意接受任何替代方法,只要它们能说明我的必备品


    谢谢你的帮助。

    这里隐藏着一个棘手的问题。多个用户在同一台笔记本电脑上输入报告的用例表明,用户在输入审计报告之前必须进行身份验证,而不是在应用程序重新连接后提交审计报告时进行身份验证

    身份验证应该告诉用户他们输入的凭据是否正确,因此您需要将用户凭据数据库同步到笔记本电脑。这是一个重大的安全风险,需要非常小心地进行,即使用户数据库是加密的,并且使用了散列、盐渍密码。例如,您可能只想同步用户记录的一个子集,即将要使用该应用程序的用户记录

    因此,让我们假设您这样做了—然后您可以使用ASP.NET应用程序上使用的同一身份验证提供程序对用户进行身份验证,并在应用程序连接时重新同步该数据库。您不需要将他们的凭据存储在数据库中,正如我提到的,数据库应该使用windows或类似的强大功能进行加密


    如果您可以绕过这一要求,允许用户只需输入用户名,在重新连接时上传(但不提交)报告,即可将报告与其帐户关联,那么所有这些都可以简化,并要求用户通过网站连接,并在正常方式验证后确认上传的报告。

    我不太明白这里有什么困难。你粘在什么上面?你可以自己做;让MyApp有一个本地数据库,当互联网可用时,该数据库会发布对live DB的更改。@Noon Silk:我想我应该提到我没有任何桌面应用程序的经验。如果你知道一个简单的方法让这三个功能都发挥作用的话,那么很难适应我的必备功能——请分享。