Neo4J中的细粒度授权(基于业务数据)

时间:2014-01-15 15:28:16

标签: security neo4j authorization

我想在使用默认Neo4J REST API访问的Neo4j数据库中实现细粒度授权。

业务数据和授权规则将保留在同一个图表数据库中。每个节点将具有来自代表应用程序用户的其他节点的传入关系“CAN_ACCESS”。

我想在GET请求上实现某种具有以下行为的拦截器:

  • 阅读授权标题
  • 执行get normal
  • 根据要返回的节点,检查授权标头中的用户是否与检索到的节点具有“CAN_ACCESS”关系。如果答案为否,则将响应代码更改为401。

Neo4j Server API中是否有类我可以扩展以将此算法插入我的服务器?我想我需要一个地方来处理请求,响应和检索到的数据。

2 个答案:

答案 0 :(得分:1)

也许您可以查看覆盖节点的RepresentationFormat并在那里签入。

您可能需要注册自定义内容类型才能使用。

另一种选择是在Neo4j服务器上添加一个过滤器并重新解析响应并检查其安全规则。

也许验证扩展中使用的过滤器可以帮助您作为示例:

https://github.com/neo4j-contrib/authentication-extension/tree/2.0

答案 1 :(得分:0)

您可以为此实施SecurityRule。 SecurityRule是对服务器的任何请求都需要传递的过滤器。