gpt4 book ai didi

rest - 二郎/OTP : authorization/authentication in RESTful applications

转载 作者:行者123 更新时间:2023-12-01 01:16:29 25 4
gpt4 key购买 nike

我正在设计一个 Erlang/OTP 应用程序,它将通过 RESTful API 公开其服务 (SOA)。

构成后端的服务将是数据库服务、价格计算服务等。

客户端可以有多种类型:Web 客户端、移动客户端、Asterisk 服务器客户端(需要在数据库服务中查找用户记录),甚至还有我不打算拥有且还不知道的客户端。客户端会以不同的方式使用 RESTful API:有些会使用所有服务,有些会只使用部分服务(SOA 方式)。

我主要关心的是身份验证/授权。

RESTful web application

我不能使用 Ruby on Rails 的内置身份验证/授权,因为 Web 客户端只是许多可能的客户端中的一个客户端,它们将通过 RESTful API 使用应用程序。

所以,我的问题是:

  • 对于预期与许多不同客户端一起使用的典型 RESTful Web 应用程序,身份验证/授权的一般概念是什么?
  • 在 RESTful Web 应用程序中授权/认证最实用的软件设计模式是什么?
  • 您可以推荐哪些 Erlang/OTP 开源软件库来为此类应用程序实现身份验证/授权?
  • 最佳答案

    只需检查其他人是如何做到这一点的,例如在这篇文章中:Authentication on Facebook .

    一般来说,这个想法是客户端调用一个单独的 API 调用,以便向系统验证自己的身份。系统可以接受任何客户或仅接受来自已注册客户列表的客户。一旦系统验证了客户端,它就会发出一个特殊的 token ,然后客户端将在所有 API 调用中使用该 token 。在 Facebook 文档中,它被称为访问 token 。如果客户端尝试在没有有效 token 的情况下调用 API,系统会将此报告为错误,并且在某些情况下可能会阻止客户端。

    在 REST 中, token 可以简单地作为 URL、POST 中的另一个参数或直接作为 JSON 中的附加字段发送。以 POST 或 JSON 形式发送它可能是最好的,因为它可以保持 URL 干净(并且不会与可能基于 URL 的任何缓存冲突)。

    这是这个想法的优点,但通常需要考虑更多的事情。例如, token 应该难以猜测,因此客户端无法在未通过系统身份验证的情况下重新创建有效 token 。此外,如果在指定时间段内没有调用 API,系统可能需要使 token 过期。

    要回答您问题的最后一部分,需要指出一些库:

  • erlang:phash2crypto库可用于生成不易猜到的唯一标记
  • Webmachine作为一个优秀的框架,或者他们喜欢称之为 REST 工具包,在 Erlang 中创建 REST 接口(interface)
  • API 调用背后的逻辑可以在 Erlang 中实现并直接从 Web 服务器提供服务,例如inets 或 yaws,或者它可以使用像 Nitrogen 或 Chicago Boss 这样的 web 框架来实现。查看 Erlang web frameworks 的列表.
  • 关于rest - 二郎/OTP : authorization/authentication in RESTful applications,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11789729/

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