关于使用OAuth使用自己的API的问题
我正在为我正在从事的项目构建RESTful API,我想让主应用程序使用该API,因为:关于使用OAuth使用自己的API的问题,api,authentication,rest,oauth,restful-architecture,Api,Authentication,Rest,Oauth,Restful Architecture,我正在为我正在从事的项目构建RESTful API,我想让主应用程序使用该API,因为: 这将导致需要维护一组代码 如果我们决定为第三方开发者公开API,那么我们已经完成了 它打开了制造使用它的移动应用程序的可能性 我真的很想学怎么做 API将托管在子域https://api.example.com主web应用程序将托管在根域https://example.com 从概念上讲,我理解一切是如何工作的,但我的主要问题是,如果发生任何情况,身份验证流将如何改变。通常第三方应用程序会: 从https:
https://api.example.com
主web应用程序将托管在根域https://example.com
从概念上讲,我理解一切是如何工作的,但我的主要问题是,如果发生任何情况,身份验证流将如何改变。通常第三方应用程序会:
https://api.example.com/request_token
https://api.authenticate.com/authorize
https://api.example.com/access_token
https://www.example.com
https://www.example.com
调用与https://api.example.com/authorize
https://www.example.com
已将数据发送到https://api.example.com
因为它们在技术上是不同的领域
我是不是把它复杂化了?我想你是把它复杂化了一点。如果代码正确分离,您可以轻松地在应用程序的服务层上构建一个精简的REST层,而应用程序的控制器也可以在服务层上构建一个精简的REST层。我遇到了同样的问题,并像这样解决了它 1 对于使用my API的第三方应用程序,它们必须通过OAuth对所有请求进行身份验证 2 对于我自己的第三方客户机(移动、AIR等),他们使用OAuth,不同的是我允许他们在授权步骤中直接发送用户名和密码(这样我就可以进行本机登录对话)。前提是您的API通过SSL/HTTPS 3
对于我的web应用程序,我使用cookie身份验证来访问API。也就是说,在登录之后,用户可以简单地调用API:url并返回JSON/XML。很适合快速浏览API(尽管像APIGee这样的真正的API控制台在这方面做得更好)。服务层是什么意思?是控制器内的模型完成了所有的起重工作吗?如果是这样的话,那么这就是我的计划——真正让我感到困惑的是身份验证。我想将所有业务逻辑转移到一个单独的API子域,因为我们需要将其公开用于移动应用程序开发,我认为这将有助于提高可伸缩性,因为我可以增加或减少连接到API的哑客户端的数量,只需让中央API处理所有数据缓存。我对可伸缩性还不太了解…你能详细说明第3项吗?当用户登录时,您是否将会话id保存在cookie中,然后在进行API调用时将其用作伪访问令牌,然后在收到API请求时进行查找?这似乎是一个安全漏洞…本质上是的。但这怎么会是一个漏洞呢?从web应用程序调用API时,我不使用OAuth。如果您已登录(由验证cookie确定),则只需调用URL即可访问API。不过,我确实忘了提到,我在同一个域上为web应用程序提供API:s。我想,只要您不完全依赖会话id来识别服务器端的用户,就不会这样。我在想你可以向我敞开心扉,但今天是放学后的星期五,我累了。根据你对其他问题的回答,你肯定是一个知识渊博的家伙!谢谢你的帮助!不,当然,您的会话cookie应该通过SSL传输,有一个非常长且非常随机的值,每个请求都会重新生成该值,如果用户在给定时间内处于非活动状态,则该值将过期,等等。但是如果您正确处理会话cookie。。。你应该准备好了。你如何确保在使用用户名密码流时,不会有人只是反编译你的移动应用程序、窃取密钥和模拟你的应用程序?这是不可避免的吗?