微软同步框架身份验证

问题描述:

当谈到Web应用程序和ASP时,我非常新手。微软同步框架身份验证

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

这里一个明显的问题是:一旦服务建立并发布 - 所以它对任何知道URL的人开放 - 如何防止未经授权的用户访问此服务。

请注意:表单身份验证的基本身份验证 - 尽管我的小型Web开发知识达到了 - 似乎并不适合此任务,因为它不是客户端试图访问的网页 - 页面的位置可以显示/或重定向登录请求 - 这是我们在此访问的服务。

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

我认为最好的办法是在URL中嵌入登录凭据并将其用于第三方库。

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

我找不到将此类代码挂接到同步服务的地方。虽然MSDN中有人建议处理_OnBeginSyncRequest事件,但无法从该方法中访问Web请求标头。

是否有任何机会可以从我可以访问请求标头的任何地方访问全局对象?任何人都可以请帮忙吗?

最后,我更喜欢普通的用户/密码字符串对。它不一定(或者不是)与Windows或目录帐户有任何关系。我宁愿在我的代码简单检查普通字符串,如果(userStr ==“Authenticated user”& & passwordStr ==“Correct Password”)。

如果您使用SOAP Web服务,您可以使用WS-Security usernametoken,它将您的用户名和密码添加到请求标头中,否则您可以在Web服务中添加用户名和密码作为参数,然后在服务器端。即

,而不是

bool SyncData(datatable) 

成为

bool SyncData(datatable, username, password) 

记为Web服务,您每次调用进行身份验证,如果你想这样做每个会话,你需要使用用户名密码第一次登录,检索一个令牌,而不是每个后续使用该令牌调用您的服务。

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