标签: restful-authentication

授权和构建RESTful后端的正确方法是什么?

关于RESTful Web服务的大量示例没有考虑到当今许多应用程序是多用户的问题.

想象一下,暴露RESTful API多用户后端.后端数据体系结构使用共享数据库和共享模式.每个表都包含对以下内容的引用tenant_id:

+-------------+----+-----------------+
|  tenant_name| id |   shared_secret |
+-------------+----+-----------------+
|         bob |  1 |   2737sm45sx543 |
+-------------+----+-----------------+
|       alice |  2 |   2190sl39sa8da |
+-------------+----+-----------------+

+-------------+----+-------+-----------+
|    pet_name | id |  type | tenant_id |
+-------------+----+-------+-----------+
|       fuffy |  1 |   dog |         1 |
+-------------+----+-------+-----------+
|       kerry |  2 |   cat |         2 |
+-------------+----+-------+-----------+
Run Code Online (Sandbox Code Playgroud)

问题1:如果有三个或更多客户端应用程序(即Android,iOS和Web App)与RESTful后端交互,您将如何对后端执行身份验证?

RESTful backend, API, HTTP-Verbs, shared database and schema 
|
| …
Run Code Online (Sandbox Code Playgroud)

api rest authorization web-services restful-authentication

7
推荐指数
1
解决办法
2880
查看次数

具有权限限制字段的 JSON API REST 端点

具有权限限制字段的 JSON API REST 端点

我正在开发符合 JSON API 的 REST api。某些端点包含某些用户应限制(只读或不可用)的字段。

构建 api 以允许某些用户访问某些字段而其他用户不能访问的最佳方法是什么?“最好”,我的意思是:

  • 最符合 REST 标准,最好是 JSON API 标准
  • 在代表使用 API 的客户防止错误和混淆方面最清晰

我正在考虑以下选项,每个选项都有其关注点/问题。对于任何其他解决方案,我将不胜感激!

选项 1:对于没有权限的用户,在受限字段上返回 null

  • 每个用户将返回不同的数据值。这是严格的反 REST 吗?
  • null 表示“空值”和 null 表示“您无权访问此”之间缺乏区别
  • 在 REST/JSON API 架构中,端点是否可以根据权限为每个用户返回不同的数据?我的印象是这与基于资源的 REST 架构的精神背道而驰,但我在任何文档或标准(例如 JSON API)中找不到任何具体指向的内容。也适用于选项 2。
  • 是否有任何范例可以在资源的元数据中添加某种“您无权访问”标志?

选项 2:完全排除没有权限的用户的受限字段

  • 每个用户将返回不同的数据值。这是严格的反 REST 吗?
  • 尝试检索字段值时,客户端中可能出现“未定义”错误

选项 3:将受限字段移动到另一个端点,可作为 ?include='field_name' 关系供具有权限的人使用

  • 示例:/api/entity 包含仅对管理员用户可用的属性字段“成本”。管理员用户可以通过 GET /api/entity?include=cost 请求成本数据。对于所有用户,“成本”作为资源对象中的关系公开,具有“类型”和“id”。
  • 这是我倾向于的选项。这里的主要缺点是端点混乱。我有很多关系需要制作成单独的端点,只是为了支持现有端点上的权限隔离数据。
  • 在 JSON API 规范中,我无法确定端点仅作为关系存在是否可以,例如我们可以拥有 /api/entity/1/cost,但没有顶级 api 端点 /api/成本。我的假设是,如果资源具有“类型”(在这种情况下,关系类型为“成本”),它也必须位于顶级端点上。
  • 在这种情况下,如果非管理员用户尝试 GET /api/entity?include=cost 或 GET /api/cost/:id,客户端可能会收到 401: Unauthorized 错误响应

注意:我已经构建了一个单独的权限架构,以便客户端可以在发出任何请求之前根据顶级端点确定用户拥有哪些 …

restful-authentication restful-architecture json-api

7
推荐指数
1
解决办法
1723
查看次数

邮递员:设置环境变量

我在 Postman 中有一个 POST 调用,它返回这个 JSON 对象:

{
    "token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiO3Jsb3Blei5hbnRvbmlvODVAZ21haWwuY29tIiwiZXhwIjoxNTkzNjc0MzUxLCJpYXQiOjE1MzMxOTQzNTF9.oTPVkcgF1QcoOsg6KDGOaaTyCQYrWS51QDdRn__MDigivcsuaqUgBhDaTYwQnxOtOCjxDRXO_cqK8i5xBq02bQ"
}
Run Code Online (Sandbox Code Playgroud)

在我的环境中,我设置了一个名为 token

我想设置值。我试过

var data = JSON.parse(responseBody);
postman.setEnvironmentVariable("token", data.message.token);
Run Code Online (Sandbox Code Playgroud)

var data = pm.response.json();
pm.environment.set("token", data.message.token);
Run Code Online (Sandbox Code Playgroud)

但两者都有错误:SyntaxError | 无效或意外的令牌

rest restful-authentication http-post restful-architecture postman

7
推荐指数
1
解决办法
7004
查看次数

Restful Authentication:允许从多台计算机登录?

我们的Rails应用程序使用Restful Authentication进行用户/会话管理,似乎从多台计算机登录到同一帐户会导致其他计算机上的会话被杀死,从而导致"记住我"功能.

所以说我在家里登录应用程序(并检查"记住我").然后我去办公室登录(并检查"记住我").然后,当我回到家时,我返回到应用程序,并且必须重新登录.

如何允许从多台计算机登录并保持"记住我"功能的所有功能?

cookies session ruby-on-rails restful-authentication

6
推荐指数
1
解决办法
1983
查看次数

简单的PHP REST服务器,具有安全用户身份验证和注册的第三方应用

我正在研究编写一个PHP REST API,它允许注册用户与第三方应用程序的Web服务进行交互.

我需要API能够做的是:

  • 为安全用户身份验证提供支持
  • 允许注册用户与第三方应用程序中的服务进行交互
  • 此应用程序应事先在系统上注册和批准(类似于推特)

我想知道什么是一个好的框架或库,从这为这样的服务提供了良好的基础.

影片名称

php rest restful-authentication

6
推荐指数
1
解决办法
4083
查看次数

WIF是使用iPhone保护WCF 4.0 Restful服务的好选择

我有一个项目需要向iphone/ipad客户端公开WCF restful服务.WCF工作,现在我需要使用用户名和密码来保护它.

出于某种原因,我有点不愿意使用CustomBasicAuth

到目前为止,Oauth在WCF世界中也不理想,你必须创建包装来做它周围的工作.如果我错了,请纠正我.

现在,我正在查看Windows Identification Foundation.说实话,这看起来像一个聪明的方式,但缺乏文档.

有两件事需要考虑:

  1. 实现必须是iPhone友好的.(不只是在.net世界中使用)

  2. 实施需要轻松部署到云(天蓝色)

我想知道你会选择哪个选项,选择它的原因是什么.任何链接或参考将不胜感激.

iphone wcf restful-authentication wif sts-securitytokenservice

6
推荐指数
1
解决办法
1581
查看次数

Shibboleth restful api

我正在为一所使用Shibboleth验证学生的大学编写一个Android应用程序.

由于我正在制作一个Android原生应用程序(不是webview),我想以编程方式传递用户名和密码并获取用户的用户凭据.Shibboleth有一个我可以使用的宁静api.

对于前 CAS有https://wiki.jasig.org/display/CASUM/RESTful+API,它允许我以编程方式发送用户名和密码并获取票证凭据.shibboleth有类似的东西吗?

cas restful-authentication shibboleth

6
推荐指数
1
解决办法
3872
查看次数

基于SAML 2.0的iPhone应用程序身份验证

团队,请帮助我如何为iPhone应用程序实现基于SAML的身份验证.我有基于.NET REST的JSON webservice作为我的后端服务.

请就此要求向我提出建议.

iphone rest json restful-authentication saml-2.0

6
推荐指数
1
解决办法
1万
查看次数

如何在我的Spring 4.0 RestFul Web服务上实现Spring Security?

我刚刚使用Spring 4.0和Hibernate 4.0开发了一个简单的restful Web服务,所以它没有beans.xml文件.

我想在Web服务上实现Spring Security,因为角色将在HTTP函数上执行GET,POST并且DELETE,即只允许管理员DELETE,管理员被允许同时执行这两个操作POST,GET并且用户只能使用GET数据.

我正在寻找一个详细的教程,以示例实现Spring Security?或者你认为有一个更容易的安全机制,无论它的强度如何?

rest spring restful-authentication spring-security

6
推荐指数
1
解决办法
2万
查看次数

适用于移动应用的Laravel RESTful API身份验证

我想讨论什么是保护API的最佳方法,以便从移动应用程序中使用.

既然没有第三方我觉得OAuth不是一个好选择?
JWT会是个不错的选择吗?

我要理解的难点是如何进行身份验证,以便我可以保护我的API中的数据,除非有人被授权调用它们.

我在服务器端使用Laravel 5.1,而我想调用API的移动应用程序是一个安卓程序.

我希望我不忘记提及任何重要信息.任何形式的帮助将不胜感激.

php authentication android restful-authentication laravel

6
推荐指数
1
解决办法
3582
查看次数