【问题标题】:How to implement custom user-based authorization in jax-rs rest service?如何在 jax-rs rest 服务中实现自定义的基于用户的授权?
【发布时间】:2015-02-26 23:07:22
【问题描述】:

tutorial 解释了如何使用 jax-rs 进行角色授权。

我正在寻找用户级别的授权。例如,对于某些方法,例如删除或编辑或访问个人用户信息,只有作为该信息所有者的用户才能访问这些资源。实现这一点的最佳方法是什么?

【问题讨论】:

  • 我个人为此使用了 CDI 拦截器。
  • 你能在答案中添加一些细节吗?这将是一个我会接受的有效答案。
  • 不是答案,只是评论。你的问题太笼统了。这是一篇关于使用带有拦截器的 shiro 来做到这一点的文章czetsuya-tech.blogspot.com/2012/10/…
  • 感谢您指出这一点。

标签: java rest authorization jax-rs


【解决方案1】:

在您的 JAX-RS 服务前使用 XACML 和 JAX-RS 策略实施点。

XACML 是可扩展访问控制标记语言。 XACML 帮助您实现的是:

  • 基于属性的访问控制,其中属性只是一个键值对。属性可以是用户 ID、资源所有者、一天中的时间、操作...
  • 外部授权:将 JAX-RS 服务内部的业务逻辑与现在在称为策略决策点 (PDP) 的中心点中表达的授权逻辑分离
  • 基于策略:授权逻辑在 PDP 内部表示为使用先前定义的属性的策略。例如:
    • 如果 document.owner==user.id,则具有角色==editor 的用户可以对文档执行操作==edit

您可以在此处阅读有关 XACML 和 ABAC 的更多信息:

您需要在要保护的 JAX-RS 服务前面部署一个拦截器(策略执行点)。

【讨论】:

    猜你喜欢
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 2015-06-28
    相关资源
    最近更新 更多