是否根据身份验证凭据 RESTful 返回不同的输出?

Posted

技术标签:

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

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

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

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

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

谢谢!

【问题讨论】:

只要通信是无状态的。 【参考方案1】:

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

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

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

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

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

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

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

HTH

【讨论】:

Jersey 库看起来很有趣。我开始使用 Jackson 库自己输出资源,但我会先看看 Jersey。 Jackson 只用于 json 编码对吧?泽西岛是其余部分

以上是关于是否根据身份验证凭据 RESTful 返回不同的输出?的主要内容,如果未能解决你的问题,请参考以下文章

Restful 上的表单身份验证

通过 Spring 进行 RESTful 身份验证

RESTful Web 服务中的身份验证

如何在不使用身份验证的情况下保护 RESTful Web 服务

从 RESTful 身份验证迁移到设计

如何存储 RESTful API 的身份验证数据