gpt4 book ai didi

api - 什么是 OAuth,它如何保护 REST API 调用?

转载 作者:行者123 更新时间:2023-12-04 02:49:46 25 4
gpt4 key购买 nike

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

5年前关闭。




Improve this question




我有移动应用程序 REST API 调用,它在没有任何 token 或安全机制的情况下访问我的服务器。

我想保护我的 API 调用。我试图了解什么是 OAuth 以及它如何保护我的移动应用程序 REST API 调用,这些调用正在访问我的服务器?

此外,我想详细了解 OAuth 中使用的以下字段。我将从哪里得到下面的字段。

Consumer Key
Consumer Secret
Token
Token Secret
Timestamp
Nonce

最佳答案

由于大多数提供商使用 OAuth 2.0 并且 OAuth 1.0 已被主要提供商弃用,我将解释 OAuth2.0

什么是 OAuth?

OAuth 是一种开放的授权标准,通常用作互联网用户使用其 Microsoft、Google、Facebook、Twitter、One Network 等帐户登录第三方网站而不暴露其密码的一种方式。

您可以实现自己的 OAuth 服务器,这里我将解释社交身份验证。所以这里的 OAuth 一词指的是 OAuth 的社交身份验证。

In layman's terms, OAuth lets users login to your web service with accounts(Facebook, Google etc).



术语:
  • 客户 :您的 API 的用户。
  • 资源所有者(api 服务器):您的 API
  • 授权服务器(认证服务器): Facebook/Google 等身份验证服务器。
  • 授权授予:您授权用户的方法。我们在这里使用授权码。
  • 授权码:身份验证服务器返回给客户端的代码,可以在 api 服务器上交换访问 token 。
  • 访问 token :标识用户的字符串,通常带有到期时间。
  • 消费者 key 或 APP_ID:身份验证服务器用来标识您的应用程序的公钥。
  • 消费者 secret 或 APP_SECRET:应该保密的私钥。

  • 以下术语与 OAuth 无关,但与 OAuth 一起使用以使其更安全。
  • 时间戳:一个表示日期和时间的字符串。
  • 随机数:只能使用一次的数字或字符串。

  • enter image description here
    来源: http://smerity.com/

    我将以 Facebook 登录为例解释图表。

    背景。
    在解释图表之前,请考虑您已完成以下操作。
  • 您向 Facebook 开发者门户注册了一个应用程序。
  • Facebook 为您提供两个代码,1) 一个 secret_key和 2) 一个 app_id
  • 你设计了一个按钮,上面写着 Login with Facebook .

  • 现在的图表。
  • 客户端请求 API 服务器。
  • API 服务器重定向到登录页面说。 To access the data: please login with facebook to access the page
  • 用户点击 login with Facbook按钮,一个新的弹出窗口 OAuth dialog打开。要求 Facebook 用户名和密码。
  • 用户输入他的用户名和密码,然后允许访问您的应用程序。 身份验证服务器 使用代码作为 URL 中的参数将用户重定向到您的网站。
  • API服务器 上被调用第 4 步 , API服务器从 URL 捕获代码。
  • API服务器调用 身份验证服务器 提供 client_secret
  • 认证服务器 返回 access token为用户访问 API 服务器。
  • API服务器身份验证服务器 用于给定 access token 的用户信息.
  • 认证服务器 返回有关用户、个人资料图片、电子邮件等的详细信息。
  • API服务器识别用户,向他发送响应以及访问 token 。
  • 客户将访问 token 发送到 api服务器在下一个请求。
  • API服务器检查访问 token 是否有效并做出响应。
  • 当访问 token 过期时,客户被要求再次登录。

  • 现在, 这如何保护您的 api?

    将需要安全的部分设置为访问它们所需的登录名。如果发出请求的客户端未登录到您的 api,请将他发送到图表的第 2 步。

    那么什么是随机数?时间戳?

    如果有人窃取访问 token ,他可以访问 API服务器只要访问 token 过期。所以当用户请求一个页面时,服务器向他发送回一个存储在服务器中的随机数。客户端使用收到的随机数签署请求并完成请求。由于 nonce 只使用一次,服务器会删除 nonce。当攻击者获取 nonce 并向服务器发出虚假请求时,服务器会拒绝该请求,因为它已经使用过的一次性数字无效。

    时间戳用于标识创建 token 或随机数的时间,该时间用于在有限的时间范围(1-2 秒)内使 token 或随机数到期,即完成请求所需的时间。

    关于api - 什么是 OAuth,它如何保护 REST API 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37674294/

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