2011-04-15 173 views
4

我正在创建一个链接到我正在创建的Web服务的网页。web服务授权最佳实践

现在网页很简单。我可以创建一个会话来存储登录信息,通过我的jQuery URL调用web服务传递给webservice。

但如何做到这一点,如果它不同的网站在不同的域访问我的web服务(客户端访问通过javascript ajax)? 它会打电话给我的web服务/登录?userid = & password =它返回一个会话ID 那么该网站必须记住sessionID并将其包含在每次调用? 例如:为了/呼出/创建地址= &项= &的companyName = &的sessionID = 435hg34kh

我很感激任何帮助,我可以收到有关此主题。

不是说这真的和上面的问题有关(我认为)我正在用php编程webservice。

+0

这取决于程序语言。在C#中,您可以在设置连接时指定凭据。你有什么特别的想法? – 2011-04-15 09:07:15

回答

2

Web服务身份验证取决于服务合同中的HTTP/SOAP协议(通常使用令牌)。

基于第一次调用检索ID然后交换会话ID的解决方案对于客户端调用是很好的(它不能访问HTTP/Soap协议,只有服务参数,在这种情况下,您通常使用基于Rest的轻量级Web服务)。

业务方调用也可能依赖于基本身份验证或WS-Security。 Ebay正在使用你的方法来实现它的web服务,这通常是从商业应用程序(而不是直接客户端浏览器)调用的。

一个结果是,服务器和客户端需要维护会话令牌。您最终需要注销用户的无效服务(防止登录令牌被重用)。

跨域的Javascript调用HTTP基本方法是记录here

+0

这是一些很棒的信息谢谢你。我没有使用网络服务的历史,并且在开始研究之前就开始做了。从我有learend,因为我的webservice可能会被看作类似于一个宁静的web服务。 – roguecoder 2011-04-17 22:31:51

+0

我使用Zend和PHP使用MVC布局来允许以json格式正确返回异常。 (稍后将添加xml)。 当前网站和webservice位于同一个域,并共享相同的会话。 但是,据我所知,这不适用于外部使用。 – roguecoder 2011-04-17 22:39:25

+0

我可以做出的最简单的改变是需要从登录传回的会话ID,然后需要由用户存储以在稍后的呼叫中返回。 – roguecoder 2011-04-17 22:39:41