小编Ste*_*eve的帖子

关于使用OAuth使用自己的API的问题

我正在为我正在开发的项目构建一个RESTful API,我想让主应用程序使用API​​,因为:

  1. 这将导致维护一组代码
  2. 如果我们决定公开第三方开发者的API,那么它已经完成了
  3. 它开辟了制作消费它的移动应用程序的可能性
  4. 我真的想学习如何做到这一点

API将托管在子域中https://api.example.com,主Web应用程序将托管在根域中https://example.com.

从概念上讲,我理解一切是如何工作的,但我的主要问题是如果认证流程将会发生变化.通常第三方应用程序将:

  1. 从中获取请求令牌 https://api.example.com/request_token
  2. 重定向用户以进行身份​​验证 https://api.authenticate.com/authorize
  3. 重定向回第三方应用程序
  4. 从中获取访问令牌 https://api.example.com/access_token

由于我控制两个域,我可以做类似的事情:

  1. 当用户登陆登录屏幕时获取请求令牌 https://www.example.com
  2. 用户使用https://www.example.com调用相同代码的表单进行身份验证https://api.example.com/authorize
  3. 如果凭据有效,则交换请求令牌以获取访问令牌
  4. 访问令牌保存在会话中,并在用户像往常一样注销时到期

第3步感觉它是错的,因为会有重复的代码,但是它不会打开我的XSS攻击是https://www.example.com发送数据的登录表单,https://api.example.com因为它们在技术上是不同的域?

我是不是太复杂了?

authentication api rest oauth restful-architecture

28
推荐指数
1
解决办法
4097
查看次数

Javascript Web App最佳实践

我很难清楚地写出我的问题,所以让我描述一下我在做什么.

我正在构建一个Web应用程序:

  • 它拥有托管在子域上的自己的API (https://api.example.com)
  • 有一个托管在tld上的主应用程序 (https://www.example.com)
  • tld没有任何数据库访问权限,而是与API交互以处理数据
  • tld通过OAuth通过api进行身份验证,并在会话中存储访问令牌和访问令牌机密
    • 当会话结束时,不再使用访问令牌,从而将用户注销

我在TLD的路线(我们称之为/ajax对这个问题)的调用JavaScript( ,,GET ,OR )提出要求的API.这样,没有人必须看到访问令牌,访问令牌秘密,消费者密钥或消费者秘密.PUTPOSTDELETE

我看到它的方式,访问令牌和访问令牌秘密实际上是我需要存储在会话中的唯一东西,因为我可以使用API​​获取其他所有内容,但不是每次都为每一条数据拨打电话我需要,我认为有些事情应该坚持下去,比如用户的个人资料,布局偏好等方面.

完成此任务的最佳方式是什么?本地存储?饼干?我应该废弃它并将其存储在会话中吗?

如果你有一些时间,还有什么其他最好的做法可以建立我可能不知道的这样的网站?

javascript architecture web-services web-applications

6
推荐指数
1
解决办法
858
查看次数