0

我对 Web 应用程序和 ASP 非常陌生。

最近,我一直在尝试使用 Microsoft Sync Toolkit 通过 OData Web 服务同步数据库。

这里明显的问题是:一旦服务设置并发布——因此它对任何知道 URL 的人开放——如何防止未经授权的用户访问该服务。

请注意:表单身份验证的基本身份验证 - 就我所知的少量 Web 开发知识而言 - 似乎不适合此任务,因为它不是客户端试图访问的网页 - 页面可以显示/或重定向登录请求 - 这是我们在此处访问的服务。

为了使事情变得更加困难,对于客户端同步,我使用了仅接受服务 URL 的 3rd 方库/同步提供程序。所以,没有办法(我认为)我可以尝试将登录凭据合并到请求标头等中。

我认为最好的选择是将登录凭据嵌入到 URL 中,并将其用于 3rd 方库。

有人可以指导我如何在服务器上设置这样的东西吗?我希望在服务器端代码的某个地方有一个地方,我可以检查凭据并根据它继续或中止(返回 401)服务请求。

我找不到将此类代码挂接到同步服务的任何地方。尽管 MSDN 中有人建议处理 _OnBeginSyncRequest 事件,但无法从该方法中访问 web-request 标头。

是否有一个可以从任何地方访问的全局对象,我可以从中访问请求标头?有人可以帮忙吗?

最后,我更喜欢普通的用户/密码字符串对。它不一定(或宁可不)与 Windows 或目录帐户有任何关系。我希望在我的代码中简单地检查纯字符串,例如 if(userStr == "Authenticated user" && passwordStr == "Correct Password")。

4

1 回答 1

0

如果您使用的是 SOAP Web 服务,您可以使用 WS-Security usernametoken 将您的用户名和密码添加到请求标头中,否则您可以将用户名和密码作为参数添加到您的 Web 服务中,然后简单地在服务器端进行验证。IE

代替

bool SyncData(datatable)

它成为了

bool SyncData(datatable, username, password)

对于 Web 服务的注意事项,您将在每次调用时进行身份验证,如果您想在每个会话中进行身份验证,您需要先使用用户名密码登录,然后检索令牌,而不是在每次后续调用您的服务时使用令牌。

您还可以使用 SSL 来保护通道,因此用户名和密码不会以纯文本形式传输。

于 2013-02-11T23:05:49.787 回答