我将为一个新的公共(public)网站开发一个 REST-ful Web 服务。 Web 服务背后的想法是让第 3 方为业务逻辑开发功能齐全的 UI。
出于安全原因,我想避免用户必须将我们的服务密码提供给 3rd 方应用程序。 (也许这不应该是一个大问题?)相反,我希望在我们的网站上实现某种登录系统,为第 3 方应用程序提供身份验证 token ,但不让他们掌握实际密码。
这让我觉得 OpenID 可能是一个潜在的解决方案。在我看来它应该可以工作:实际密码由 OpenID 提供程序处理,因此它不依赖于 3rd 方应用程序。我认为问题可能在于各种传递,但这应该是可以管理的。
然而,令人惊讶的是,谷歌缺乏这方面的信息,所以我想听听 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
祝你好运,编码愉快!
关于web-services - 使用 OpenID 的 Web 服务身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/386973/