1

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

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

我想创建一个轻量级桌面应用程序(我们称之为MyApp)(使用 Offline),以便用户可以在没有 Internet 连接时提交审计结果。

以下是必备品:

  1. 针对我的 SqlMembershipProvider 对用户进行身份验证(匿名用户无法提交审核结果)
  2. 只向用户询问一次凭据(当她/他打开MyApp时)(我将能够保存身份验证令牌,但在某些情况下MyApp将安装在多个用户使用的笔记本电脑上,因此我会每次打开MyApp时都必须强制用户登录)
  3. 不要以纯文本形式存储密码(如果打开MyApp时用户处于脱机状态,我想保存凭据以在连接可用时对用户进行身份验证) - 不确定这是否可能

一旦我弄清楚了上面的三件事——剩下的就很容易了。

如果上述情况令人困惑,这是一个简单的场景:

  1. MyApp安装在办公室笔记本电脑上,人们旅行时随身携带
  2. 2 用户前往偏远地区(无互联网),并进行 2 次单独审核
  3. 用户 1 打开 MyApp,提供他的用户/通行证(参见 MUST-HAVES 中的 #2),提交 3 个结果(我将保存结果和用户凭据以验证用户并在连接可用时提交结果) - 参见 #必备品中的 1 和 #3
  4. 用户 2 打开 MyApp,并执行与用户 1 在步骤 3 中相同的例程。
  5. 2 天后,他们回到办公室,互联网可用,步骤 3 和 4 的结果代表各自的用户提交到我的网络应用程序

我已经研究过 Microsoft Sync 框架,但这对于我正在做的事情来说似乎有点过头了(而且我不确定它是否也能适应我的必备品)。

我对任何替代方法持开放态度,只要它们能满足我的必备条件。

谢谢您的帮助。

4

1 回答 1

0

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

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

因此,我们假设您这样做了——那么您可以使用在 ASP.NET 应用程序上使用的相同身份验证提供程序来验证用户身份,并在连接应用程序时重新同步该数据库。除了在数据库中之外,您不需要存储他们的凭据,正如我所提到的,应该使用 Windows数据保护 API或类似的强大功能对其进行加密。

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

于 2011-06-12T00:18:36.567 回答