我已经读了好几个小时,但未能找到清晰易懂的解释。在哪里使用REST身份验证?
假设我正在从头开发一个系统,而不是在服务器端有一些单片MVC,我想使用twitter的例子 - 制作“所有东西REST” - 分布式独立模块系统通过相互通信休息。然后还可以在浏览器和服务器之间使用REST(身份验证)吗?
答案 0 :(得分:1)
为了进一步改善互联网规模要求的行为, 我们添加了分层系统约束(图5-7)。如中所述 3.4.2节,分层系统风格允许架构 通过约束组件行为由分层层组成 这样每个组件都不能“看到”超出直接层的范围 他们正在互动。通过限制系统的知识 单层,我们对整个系统的复杂性和界限进行了界定 促进基质独立。图层可用于封装 传统服务并保护旧服务器的新服务, 通过将不经常使用的功能移动到a来简化组件 共享中介。中介也可用于改善系统 通过跨多个服务实现负载均衡来实现可扩展性 网络和处理器。
分层系统的主要缺点是它们增加了开销 和数据处理的延迟,减少用户感知 表现[32]。对于支持缓存的基于网络的系统 约束,这可以通过共享缓存的好处抵消 中介机构。将共享缓存放在一个边界上 组织域可以带来显着的性能优势 [136]。此类层还允许对数据实施安全策略 跨越组织边界,如防火墙所要求的那样 [79]。
分层系统和统一接口约束的组合 诱导类似于制服的建筑特性 管道和过滤器样式(第3.2.2节)。虽然REST交互是 双向,超媒体交互的大粒数据流都可以 像过滤器组件一样处理数据流网络 有选择地应用于数据流以进行转换 内容通过[26]。在REST中,中间组件可以 因为消息是主动转换消息的内容 自我描述和他们的语义是中介人可见的。
你应该真正阅读菲尔丁论文的layered system部分。
使用REST身份验证究竟在哪里?
它在REST客户端和REST服务之间使用(客户端将包含auth标头的请求发送到服务)。 REST客户端可以位于浏览器上,另一台服务器上,服务器上(例如负载均衡器)等......它取决于当前上下文什么是REST客户端以及什么是REST服务。通过REST,您有一个层次结构,其中上层包含调用下一层服务的客户端,依此类推......此结构的组件(客户端,服务)不知道该层是否存在层次...
因此,例如可能发生的情况是,代理在未经授权的情况下将请求中继到下一层,因为授权将由其他组件完成。您可能会对客户端进行身份验证并添加具有用户身份或权限的辅助身份验证标头,因此下面的图层不必再次处理用户名和密码。有很多选择...
谈谈oauth。它用于授权第三方(不可信客户端)访问用户帐户。因此,在这种情况下,客户端在不同的服务器上运行,并且它发送用户注册的访问令牌(而不是用户名和密码)。此第三方客户端使用该用户的允许部分权限。许多用户可以使用不同的访问令牌注册相同的第三方客户端。
答案 1 :(得分:0)
REST是一种架构风格,REST与身份验证/授权无关。也就是说,有一些身份验证/授权机制为REST服务提供服务的RESTFul API:OpenID和OAuth/OAuth2。它们被设计为在客户端和服务器之间使用,以及更多(您可以阅读更多关于它们的内容)。
您也可能有兴趣阅读'whats-the-difference-between-openid-and-oauth'
希望这有帮助!