我正在为我正在处理的项目构建一个 RESTful API,我想让主应用程序使用该 API,因为:
- 这将导致需要维护一组代码
- 如果我们决定为 3rd 方开发人员公开 API,那么它已经完成了
- 它开辟了制作使用它的移动应用程序的可能性
- 我真的很想学习如何去做
API 将托管在子域中https://api.example.com
,而主 Web 应用程序将托管在根域中https://example.com
。
从概念上讲,我了解一切是如何工作的,但我的主要问题是身份验证流程将如何改变。通常,第 3 方应用程序会:
- 获取请求令牌
https://api.example.com/request_token
- 重定向用户以进行身份验证
https://api.authenticate.com/authorize
- 被重定向回第 3 方应用程序
- 从以下位置获取访问令牌
https://api.example.com/access_token
由于我控制这两个域,我可以做类似的事情:
- 当用户登陆登录屏幕时获取请求令牌
https://www.example.com
https://www.example.com
用户使用调用相同代码的表单进行身份验证https://api.example.com/authorize
- 如果凭据有效,则将请求令牌交换为访问令牌
- 访问令牌保存在会话中,并在用户像往常一样注销时过期
第 3 步感觉是错误的,因为会有重复的代码,但它不会让我受到 XSS 攻击吗?是https://www.example.com
发送数据的登录表单,https://api.example.com
因为它们在技术上是不同的域?
我是否过于复杂了?