REST身份验证究竟在哪里使用?

Cab*_*ero 5 openid rest oauth

我已经读了好几个小时,但未能找到清晰易懂的解释.REST身份验证究竟在哪里使用?

  • 在浏览器和服务器之间(替换像PHP会话/浏览器cookie组合的东西)?
  • 服务器和其他服务器之间?
  • 在同一台服务器上的节点/模块之间?

假设我正在从头开发一个系统,而不是在服务器端有一些单片MVC,我想使用twitter的例子 - 制作"所有东西REST" - 分布式独立模块系统通过REST相互通信.然后还可以在浏览器和服务器之间使用REST(身份验证)吗?

inf*_*rno 1

为了进一步改进互联网规模要求的行为,我们添加了分层系统约束(图 5-7)。如第 3.4.2 节中所述,分层系统样式通过约束组件行为来允许架构由分层层组成,这样每个组件都无法“看到”与其交互的直接层之外的内容。通过将系统的知识限制在单层,我们限制了整个系统的复杂性并促进了基底的独立性。层可用于封装遗留服务并保护遗留客户端的新服务,通过将不常用的功能移至共享中介来简化组件。中介还可以通过跨多个网络和处理器实现服务的负载平衡来提高系统的可扩展性。

分层系统的主要缺点是它们增加了数据处理的开销和延迟,从而降低了用户感知的性能[32]。对于支持缓存约束的基于网络的系统,这可以通过中介共享缓存的好处来抵消。将共享缓存放置在组织域的边界可以带来显着的性能优势[136]。这些层还允许对跨越组织边界的数据强制执行安全策略,正如防火墙所要求的[79]。

分层系统和统一接口约束的组合产生了类似于统一管道和过滤器样式的体系结构属性(第 3.2.2 节)。尽管 REST 交互是双向的,但超媒体交互的大颗粒数据流都可以像数据流网络一样进行处理,过滤器组件有选择地应用于数据流,以便在内容通过时对其进行转换 [26]。在 REST 中,中介组件可以主动转换消息的内容,因为消息是自描述的,并且它们的语义对中介来说是可见的。

你真的应该阅读菲尔丁论文的分层系统部分。

REST 身份验证具体用在哪里?

它在 REST 客户端和 REST 服务之间使用(客户端向服务发送包含身份验证标头的请求)。REST 客户端可以位于浏览器上、另一台服务器上、您的服务器上(例如负载均衡器)等...这取决于当前上下文什么是 REST 客户端以及什么是 REST 服务。通过 REST,您有一个层层次结构,其中上层包含调用下一层服务的客户端,依此类推...此结构的组件(客户端、服务)不知道该层的存在等级制度...

例如,代理可能会在未经授权的情况下将请求中继到下一层,因为授权将由其他组件完成。您可能会对客户端进行身份验证并添加具有用户身份或权限的辅助身份验证标头,因此下面的层不必再次处理用户名和密码。有很多选择...

只是谈谈 oauth。它用于授权第三方(不受信任的客户端)访问用户帐户。因此,在这种情况下,客户端在不同的服务器上运行,并且它发送用户注册的访问令牌(而不是用户名和密码)。此第 3 方客户端使用该用户权限的允许部分。许多用户可以使用不同的访问令牌 ofc 注册相同的第 3 方客户端。