gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 10:04:45 25 4
gpt4 key购买 nike

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

  • 这将导致维护一套代码
  • 如果我们决定为 3rd 方开发者公开 API,它已经完成
  • 它开启了制作使用它的移动应用程序的可能性
  • 我真的很想学怎么做

  • API 将托管在子域 https://api.example.com 上并且主 Web 应用程序将托管在根域 https://example.com .

    从概念上讲,我理解一切是如何工作的,但我的主要问题是身份验证流程将如何改变,如果有的话。通常,第 3 方应用程序会:
  • https://api.example.com/request_token 获取请求 token
  • 重定向用户以在 https://api.authenticate.com/authorize 上进行身份验证
  • 重定向回第 3 方应用程序
  • https://api.example.com/access_token 获取访问 token

  • 由于我控制两个域,我可以做类似的事情:
  • 当用户登陆 https://www.example.com 登录屏幕时获取请求 token
  • 用户使用 https://www.example.com 上的表单进行身份验证调用与 https://api.example.com/authorize 相同的代码
  • 如果凭据有效,则请求 token 将交换为访问 token
  • 访问 token 保存在 session 中,并在用户像往常一样注销时过期

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

    我是否过于复杂了?

    最佳答案

    我遇到了同样的问题并像这样解决了它。

    1
    对于第三方应用程序,使用我的 API,他们必须通过 OAuth 对所有请求进行身份验证。

    2
    对于我自己的第三方客户端(移动、AIR 等) - 他们使用 OAuth,不同之处在于我允许它们在授权步骤中直接发送用户名和密码(因此我可以进行本地登录对话)。前提是您的 API 通过 SSL/HTTPS。

    3
    对于我的 Web 应用程序,我使用 cookie 身份验证来访问 API。即登录后,用户可以简单地调用 API:urls 并获取 JSON/XML。也很适合快速探索 API(尽管像 APIGee 这样的真正的 API 控制台在那里做得更好)。

    关于api - 关于使用 OAuth 使用自己的 API 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8527292/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com