【问题标题】:webservice authorization best practicesWeb服务授权最佳实践
【发布时间】:2011-08-06 02:32:42
【问题描述】:

我正在创建一个链接到我正在创建的网络服务的网页。

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

但是,如果它在不同域上的不同网站访问我的 web 服务(通过 javascript ajax 客户端访问),该怎么办? 它会调用我的 webservice/login?userid=&password= 来返回 sessionID 那么该网站必须记住 sessionID 并将其包含在每次通话中? 例如:order/outbound/create?address=&item=&companyName=&sessionID=435hg34kh

?

感谢我在此主题上获得的任何帮助。

并不是说这真的与上述问题有任何关系(我认为)我正在用 php 编写 web 服务。

【问题讨论】:

  • 这取决于程序语言。在 C# 中,您在设置连接时指定您的凭据。你有什么特别的想法吗?

标签: web-services web-applications authentication login


【解决方案1】:

使用 Web 服务进行身份验证取决于 HTTP/Soap 协议,或者在服务合同中(通常使用令牌)。

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

业务方调用也可能依赖于基本身份验证或 WS-Security。 Ebay 正在将您的方法用于其 Web 服务,这些服务通常从业务应用程序(而不是直接客户端浏览器)调用。

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

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

【讨论】:

  • 这是一些很棒的信息,谢谢。我没有使用 web 服务的历史,并且在真正进行研究之前就开始了。据我所知,我的网络服务可能看起来类似于一个宁静的网络服务。
  • 我正在使用 Zend 和 php,使用 MVC 布局来允许以 json 格式正确返回异常。 (稍后将添加 xml)。目前网站和网络服务在同一个域上,共享同一个会话。但是据我所知,这不适用于外部使用。
  • 我能做的最简单的改变是要求从登录中传回会话 ID,然后需要由用户存储以在以后的调用中返回。
猜你喜欢
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 2014-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-28
  • 2016-05-24
相关资源
最近更新 更多