【问题标题】:Is there a way to block an user from acessing PUT, POST and DELETE resources in resteasy?有没有办法阻止用户访问 resteasy 中的 PUT、POST 和 DELETE 资源?
【发布时间】:2012-11-06 16:02:45
【问题描述】:

我的程序中有很多方法,也有很多用户。我该怎么做,只允许特定用户配置文件访问在 RestEasy 中标有 @GET 的方法?

更新

我有一些用户资料,例如管理员、所有者、经理、员工和演示。

我想拒绝对个人资料为演示的用户进行除 GET 之外的所有操作。我阻止某些用户执行某些方法的方法只是检查他们属于哪个配置文件(IF)。

【问题讨论】:

  • 你如何识别这样的用户?请提供有关您的应用程序中的“用户配置文件”是什么以及此类用户配置文件如何与您的资源交互的更多详细信息。

标签: java rest authorization jax-rs resteasy


【解决方案1】:

如果您的系统已经定义了用户和角色,并且您可以使用 JAAS 实现标准身份验证和授权,那么您可以使用 Jboss 安全注释来保护您的方法。请查看此链接了解更多详情 -

http://docs.jboss.org/resteasy/2.0.0.GA/userguide/html/Securing_JAX-RS_and_RESTeasy.html

【讨论】:

  • 看起来很有用,但他们说:注意!!!如果您使用 EJB,请不要打开此开关。 EJB 容器将提供此功能而不是 Resteasy。我正在使用 EJB,所以看起来我们陷入了另一个问题......
  • 这甚至是个好消息。您可以使用 EJB3 附带的标准授权机制。设置 Jaas 身份验证后,您可以使用“PermitAll”和“RolesAllowed”注释来控制对方法的访问。 docs.oracle.com/javaee/5/api/javax/annotation/security/…
【解决方案2】:

在 REST 服务之前,您还可以添加反向 HTTP 代理(如 Apache)并使用所需的身份验证提供程序(LDAP 或其他)。

例子:

<Location /myService/>
   AuthType Basic
   AuthName Foo
   AuthBasicProvider ldap
   AuthzLDAPAuthoritative off
   AuthLDAPURL ldap://ldap.acme.org/dc=acme,dc=org?cn
   <LIMIT POST PUT DELETE>
     require ldap-group cn=employee,dc=acme,dc=org
   </LIMIT>
</Location>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 2018-09-17
    • 1970-01-01
    • 2019-10-13
    • 2020-08-23
    相关资源
    最近更新 更多