[英]Erlang/OTP architecture: RESTful protocol for SOAish services
[英]Erlang/OTP: authorization/authentication in RESTful applications
我正在设计一个Erlang / OTP应用程序,它将通过RESTful API公开其服务(SOA)。
构成后端的服务将是数据库服务,价格计算服务等。
客户端可以是多种类型:Web客户端,移动客户端,Asterisk服务器客户端(需要在数据库服务中查找用户记录),甚至是我不打算拥有和不知道的客户端。 客户端将以不同的方式使用RESTful API:一些将使用所有服务,一些将仅消耗一些服务(SOA方式)。
我所关注的主要问题是身份验证/授权。
我无法使用Ruby on Rails的内置身份验证/授权,因为Web客户端只是许多可能通过RESTful API使用应用程序的客户端的一个客户端。
所以,我的问题是:
只需检查其他人如何做到这一点,例如在本文中: Facebook上的身份验证 。
通常,这个想法是客户端调用一个单独的API调用,以便向系统验证自身。 系统可以接受任何客户端或仅接受已注册客户端列表。 系统验证客户端后,会发出一个特殊令牌,客户端随后会在所有API调用中使用该令牌。 在Facebook文档中,它被称为访问令牌。 如果客户端尝试在没有有效令牌的情况下调用API,则系统会将此报告为错误,并且在某些情况下可能会阻止客户端。
在REST中,令牌可以简单地作为URL中的另一个参数,POST中或直接在JSON中作为附加字段发送。 将其作为POST或JSON发送可能是最好的,因为它保持URL清洁(并且不会与任何可能基于URL的缓存冲突)。
这是这个想法的优点,但通常需要考虑更多的事情。 例如,令牌难以猜测,因此客户端无法在未经系统验证的情况下重新创建有效令牌。 此外,如果在指定的时间段内未调用API,则系统可能需要使令牌到期。
为了回答你问题的最后部分,一些图书馆要指出:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.