标签: restful-authentication

基于角色的RESTful资源的应用程序结构

在使用RESTful资源路由时,是否存在实现用户角色的最佳共识方法?

说我有以下资源:

User has_many Tickets
Event has_many Tickets
Ticket belongs_to Person, Event
Run Code Online (Sandbox Code Playgroud)

然后进一步说我有两种类型的用户:客户和代理商.两者都将登录到系统,但具有基于其角色的不同资源访问和功能.例如:

客户可以访问:

  • 事件索引,显示
  • 故障单索引(由用户确定),显示,购买/创建,返回/删除
  • 人创造,展示,更新

代理可以访问:

  • 事件索引,显示,创建,更新,删除
  • 票务索引,显示,销售/创建,更新,退款/删除
  • 人员索引,显示,创建,更新,删除

以下4种一般方法中哪一种更清洁,更灵活?

角色文件夹中的独立控制器和命名空间中的资源,例如:

namespace "agent" do
  resources :events, :tickets, :people
end
namespace "customer" do
  resources :events, :tickets, :people
end
Run Code Online (Sandbox Code Playgroud)

按角色分隔控制器,例如:

AgentController
  def sell_ticket, etc

CustomerController
  def buy_ticket, etc
Run Code Online (Sandbox Code Playgroud)

共享控制器在需要时具有单独的操作,例如:

TicketController
  before_filter :customer_access, :only => :buy
  before_filter :agent_access, :except => :buy

  def buy  #accessed by customer to create ticket

  def sell   #accessed by agent to create ticket
Run Code Online (Sandbox Code Playgroud)

与条件语句共享的操作,例如:

TicketController
  def create …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails restful-authentication

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

Spring Security,OAuth和预授权

任何人都可以提供一些信息,提示或教程,演示如何在Spring的PreAuthorize功能中使用Spring Security OAuth吗?理想情况下,我想将用于预授权的用户名链接到OAuth凭据.

java spring restful-authentication oauth spring-security

6
推荐指数
0
解决办法
1990
查看次数

JAX-RS和自定义授权

我正在尝试保护JAX-RS端点,目前正在尝试弄清楚身份验证和授权是如何工作的.大多数示例都非常简单,因为它们仅通过web.xml从Java EE App-Server角色中捎带.

我想知道如何使用除Java EE AS角色以外的其他东西.例如:我想使用会话或某种令牌(或某种标识符).

java restful-authentication jax-rs

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

Basic HTTP身份验证的优缺点是什么?

我创建了一个使用基本HTTP身份验证的REST API .仅限于SSL.现在它已经实现了,我听到批评基本HTTP over SSL并不安全.对我来说"停止报刊"的项目是不利的,这将超出我的一些客户使用OAuth等技能范围的范围.我需要了解这种方法的风险和回报.任何使用Basic HTTP auth的大牌名称的例子都会有所帮助.

authentication rest restful-authentication basic-authentication

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

通过基于django构建的RESTfull Web服务对Web和移动应用程序进行身份验证

我正在为我的公司开发一个具有以下架构的解决方案:基于django构建的RESTfull Web服务,它为Web客户端应用程序移动客户端应用程序(使用phonegap编写)提供身份验证和持久层.

我们在互联网上一直在寻找关于客户端身份验证方法的很多内容,为Web和移动客户端应用程序提供支持,从我们发现的(非常差)我们考虑为每个用户生成API密钥从移动客户端应用程序登录,并将此API密钥保存在设备的本地存储中; 并且,在Web客户端中,使用传统的cookie会话管理,包括POST,PUT和DELETE请求中的CSRF令牌.

我们想知道认证方法的最佳实践是什么,这种方法是否足够好?有没有其他方法来处理身份验证?哪一个是最好的?

我们试图使用oAuth无效,因为它增加了我们开发的复杂性.

我们已经检查了这个问题,但它的答案对我们没有多大帮助,因为我们正在使用phonegap,并且具有上述架构.

谢谢你的帮助!

authentication django restful-authentication

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

如何将Backbone.js应用程序安全地连接到数据库?

我开始计划一个网络应用程序,Backbone.js将非常适合客户端.我一直在计划为后端使用节点,但这暂时是开放的.

我需要一种方法来保护前端应用程序与数据库的连接.我在Quora上与其他人进行讨论,但我认为思考过程从核心问题中抽象得过于抽象.

我更喜欢通过RESTful端点访问数据,但我需要确保只有我的应用可以与API通信.我将完全控制应用程序的前端和后端.有可能围绕数据库构建其他应用程序(一年或两年),但是它们将由我开发(即不是公共API),并且这些可能会使用单独的OAuth端点.

关于应用程序的一些注释(可能有用也可能没用):

  • 该应用程序计划以SaaS模式提供,公司订阅并允许多个用户.
  • 每家公司的数据都需要是安全的,只有该公司的成员才能访问.
  • 所有流量(前端和应用程序到API)都将通过SSL发送.

任何关于最佳方法的建议将不胜感激.

security rest restful-authentication client-side backbone.js

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

网站和RESTful API的"共享"身份验证

目标:我的服务器需要将非用户定向到登陆/主页,并将用户登录到实际的应用程序.加载应用程序后,它将向RESTful API(通过Ajax)发出经过身份验证的 HTTP请求.

我有一个需要身份验证的RESTful API.在另一台服务器上,我有我的网站,也需要身份验证,因此我可以确定是为非用户显示登陆/主页还是为登录用户显示应用程序.

最初我认为为RESTful API实现HTTP Basic Auth就足够了.但是,为了让我的网站运行身份验证,我还需要在那里设置身份验证,这意味着复制低级代码以检查REST API和网站服务器中数据库中的凭据.

或者,我想知道该网站是否可以通过RESTful API进行身份验证.例如,在我的请求处理程序中POST /login,我可以GET向我的API发出请求,从请求正文传递用户凭据.如果请求返回200 OK,我可以签署用户的会话,从而验证它们.从那时起,对REST API的Ajax请求需要使用相同的凭据进行身份验证,因此我可以:

  • 设置一个包含凭据的cookie,从而允许JavaScript在执行请求之前检索凭据(使用SSL确定?)
  • 将凭据转储到Web应用程序的服务HTML中,从而允许JavaScript在执行请求之前检索凭据(使用SSL确定?)
  • 通过Web应用服务器代理API,在那里我可以从会话中检索凭据并将它们添加到Authorization代理请求的标头中?

或者,我想我可以在两台服务器之间共享会话,虽然我听说这是RESTful设计的不良做法.

这样做会有什么问题?有没有更好的方法来实现我的目标?

authentication api rest restful-authentication http

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

如何为Angular.js或Ember.js保护Spring RESTful Web服务

我有一个Spring MVC应用程序,它使用Spring Security来处理用户登录身份验证,工作正常.

现在我想将一些Ember.js和Angular.js代码添加到访问Spring RESTful Web服务(只返回JSON数据)的HTML页面中.

如何将用户登录身份验证绑定到RESTful Web服务的身份验证?换句话说,我想这样做只有在用户登录后才能访问RESTful Web服务.这样,Angular.js和Ember.js库就可以从我的用户页面安全地访问这些RESTful Web服务没有其他人能够直接打电话给他们.

我在另一篇文章中读到,Spring Security从未打算用于完整的Ajax框架,这是真的吗?我希望事实并非如此.我想现在这种类型的东西必须非常普遍,因为有很多AJAX客户端框架基于访问JSON/RESTful API而工作.

rest spring restful-authentication spring-security ember.js

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

使用拦截器和注入在JAX-RS中进行身份验证/授权

我正在使用WildFly 8在JavaEE 7中开发一个新的应用程序.我正在使用JAX-RS为远程应用程序提供RESTful服务接口.

HttpHeaders可以使用@Context注释在资源方法参数中注入类似对象的东西.由于该对象基于请求参数(当然,HTTP标头),我提出了创建自己的可注入User对象的想法,该对象是根据请求中存在的有效令牌创建的(类似于OAuth访问令牌) ).

所以,我希望实现这样的目标:

@Path("/resources")
public class MyResource {

    @Path("/{id}")
    @GET
    public Response getById(@Context User user, @PathParam("id") long id) {
        ...
    }

}
Run Code Online (Sandbox Code Playgroud)

其中User是基于请求参数创建的可注入对象,例如可通过HttpHeaders对象访问的对象.当然,如果由于任何原因无法创建User对象,则提供程序也可以抛出异常并返回HTTP错误响应.

现在,我的问题是:

  1. 这是一个很好的设计吗?如果没有,我有哪些更好的选择?
  2. 我怎样才能做到这一点?我不在乎我的解决方案是否特定于JAX-RS并且使用WildFly/RestEasy特定的内部,但我绝对更喜欢便携式解决方案(如果存在).

谢谢

rest restful-authentication jax-rs java-ee wildfly

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

用Kong认证

我正在寻找Kong来取代我目前手工推出的NodeJS API网关.目前,我有一个用户服务,通过在登录时提供JWT来处理身份验证(用Django编写),然后客户端通过标头传入.我现在的API网关然后拦截任何电话,也确实验证调用返回给用户的服务,并与替换JWT报头X-User-IdX-User-Email.

据我所知,孔可以大致做同样的事情.我试图弄清楚这应该如何在一个完美的世界中发挥作用.我仍然有机会更换大部分基础设施,因此重写一些服务并非完全不可能.

所以,在我看来,会发生以下情况:

  1. 用户在我的网站上注册.然后我在Kong上用他们的用户名/ id创建一个新的消费者
  2. 用户登录.这是我卡住的地方.我是否登录(或者在这种情况下,只是将用户认证为所述用户),向Kong询问此消费者的JWT,然后返回?如果我想在JWT的有效载荷中获得更多数据怎么办?当JWT到期时,Kong会发生什么?
  3. 当用户请求服务时,Kong将从标题中嗅出JWT,替换为X-Consumer-*- 这是正确的吗?

如果我的想法错了,或者有更好的方法来实现这一点,请纠正我.我对整个微服务的事情都很陌生.

authentication django restful-authentication microservices kong

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