1

我有一个客户端-服务器程序,它使用套接字以有状态的方式传输信息。我的意思是,连接是持久的,并且使用嵌入软件本身的公钥和私钥进行身份验证。它运行良好且非常高效,但我建立的整体框架使添加任何新内容成为一个漫长的过程,因此我想转向 Web 服务。在某个时候,我将获得证书并使用 SSL,但现在我只是担心确保用户经过身份验证以执行他们想做的事情。

原始模式让用户在开始时输入他们的用户名和密码,服务器只记住他们在连接期间的身份。现在我正在转向无状态 Web 服务,我可能不得不在每次请求时都交出这些信息。我对网络服务相当陌生,在网上做了一些搜索,发现了两个关于如何做到这一点的建议。一种只是在每个函数调用中发送一个身份验证对象,另一种是将用户名和密码信息粘贴在 SOAP 标头中。我有点困惑哪种方法会更好,因为无论哪种方式,您仍然只是在服务器端进行字符串比较(好吧,在密码的情况下,哈希然后比较)。

此外,虽然它的客户端是一个 WPF 应用程序,但将来我想制作一个支持浏览器的版本。我对如何做到这一点的决定会影响未来的网络工作吗?想法!

编辑:我应该提到有几个级别的访问权限。较低级别只能访问某些功能,而最高级别可以访问所有功能。我认为这是我必须在函数本身中验证的东西,但如果有内置的方法可以更轻松地处理这个问题,我会全力以赴。

4

2 回答 2

3

您应该选择来自 WS-Security 的标准实现,这意味着在消息正文之外传递身份验证数据。这是合理的,因为安全和消息内容代表了两个不应该混为一谈的独立问题。您应该能够简单地将一个安全选项换成另一个,而无需更改消息结构。

于 2012-09-03T19:22:01.517 回答
0

SOAP Header 身份验证是与 Web 服务一起使用的适当方法,而不是使用它提供的标准化方法的功能。

于 2012-09-03T19:23:32.153 回答