【问题标题】:Is returning different output based on authentication credentials RESTful?是否根据身份验证凭据 RESTful 返回不同的输出?
【发布时间】:2014-12-05 11:18:53
【问题描述】:

我有一个 REST API,它允许开发人员获取某个资源:

/api/projects
/api/project/4
...

API 需要身份验证。身份验证令牌被添加到 HTTP 标头中。

RESTful 是否会根据验证的用户返回不同的输出?

谢谢!

【问题讨论】:

  • 只要通信是无状态的。

标签: rest restful-architecture


【解决方案1】:

REST 在这方面没有定义任何东西。

您应该保持身份验证逻辑和授权逻辑独立于您的 RESTful 架构。

确实有一些要求,您希望根据不同的属性/参数更改返回的内容,例如:

  • 认证类型
  • 一天中的时间
  • 用户位置
  • 设备类型...

您可以通过在 REST 服务前使用过滤器来实现。过滤器/拦截器解释here

然后,您将向决策点发送授权请求,该决策点根据用户的身份(或其他属性)确定可以返回的内容。

例如,当且仅当项目属于同一区域时,您可以有一个逻辑将项目返回给用户。 REST 端点仍然是 /api/projects,但返回的内容会因 authZ 逻辑而异。查看 XACML 和 ALFA 来实现该层。

HTH

【讨论】:

  • Jersey 库看起来很有趣。我开始使用 Jackson 库自己输出资源,但我会先看看 Jersey。
  • Jackson 只用于 json 编码对吧?泽西岛是其余部分
猜你喜欢
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
  • 2020-01-24
  • 1970-01-01
  • 2018-03-25
  • 2015-06-01
相关资源
最近更新 更多