我将为一个新的公共网站开发REST-ful Web服务.Web服务背后的想法是让第三方为业务逻辑开发功能齐全的UI.
出于安全原因,我希望避免用户将我们的服务密码提供给第三方应用程序.(也许这不应该是一个大问题?)相反,我希望在我们的网站上实现某种登录系统,为第三方应用程序提供身份验证令牌,但保持实际密码不在他们手中.
这让我觉得OpenID可能是一个潜在的解决方案.在我看来,它应该工作:实际的密码由OpenID提供商处理,因此它不在第三方应用程序.我认为问题可能在于各种各样的障碍,但这应该是可以控制的.
但是,有一个令人惊讶的缺乏Googleable信息,所以我想SO的意见.有没有人之前实现过类似的系统?它甚至可能吗?这值得吗?
我完全同意你想要的是OAuth; 我说曾经在OAuth和OpenID系统上工作过.我也曾经在你的船上几次,不得不开发一个REST Web服务api.
有关OAuth的一个非常好的想法,以及为什么它是您想要的,请参阅这些附加文章:
这些必须阅读,有四个部分全部阅读:http: //hueniverse.com/oauth/guide/
RFC,阅读上面阅读,因为它对大多数人来说可能有点令人生畏:http: //oauth.net/core/1.0
最后可能还有一些代码.我有几个托管的项目正在使用Java/Groovy来执行OAuth.一个是普通的旧OAuth客户端,另一个是与NetFlix进行特定交互的客户端. http://www.blueleftistconstructor.com/projects/
如果你对REST相对缺乏经验(你还没有建立一个完整的web api)我会建议你购买(或者更好地让你的老板去)Richardson&Ruby的"RESTful Web Services".这是一本O'Reilly的书.我可以说这是他们在过去几年首次登场的好书之一.
查看一些基于RESTful OAuth的API也可能有所帮助.NetFlix API是一个很好的例子:http://developer.netflix.com/docs
祝你好运,编码愉快!