Virtuoso HTTP POST / PUT的身份验证

时间:2016-11-30 20:12:48

标签: security http-post rdf virtuoso

我尝试使用基于Web的SPARQL端点(http://localhost:8890/sparql/)在Virtuoso中为RDF三元组执行INSERT语句:

INSERT DATA
  { 
      GRAPH <http://my.graph> 
      { 
        <http://test.com/someid> <http://namespace.ref#someVar> 123
      } 
  }

但我得到了

  

Virtuoso 42000错误SR186:安全:无权执行程序DB.DBA.SPARQL_INSERT_DICT_CONTENT,用户ID为107,组ID为107

我能够通过我的数据库编辑器运行相同的语句,该编辑器使用端口1111上的JDBC驱动程序,使用DBA登录。

通过端口DBA 1111运行以下内容后,Web界面/服务插入成功:

grant execute on DB.DBA.SPARQL_INSERT_DICT_CONTENT to "SPARQL";
grant execute on DB.DBA.SPARQL_INSERT_DICT_CONTENT to SPARQL_UPDATE;

但是,我想撤消用户SPARQL的权限,我知道这些权限与网络界面相关联,并发送HTTP POST / PUT / DELETE使用摘要式身份验证提供的用户凭据请求。这可能吗?怎么样?我去了this page of the manual,但它是空的。

2 个答案:

答案 0 :(得分:4)

OP的目标在他们最初试图访问的the new location of the manual page中进行了讨论。 (更多详细信息在产品网站上,而不是在下面复制。)

  

Virtuoso为支持经过身份验证的SPARUL(a / k / a SPARQL-Update)的SPARQL服务保留路径/sparql-auth/。此端点允许特定SQL帐户通过SPARQL协议执行SPARUL。要允许通过SQL或ODBC登录并更新物理三元组,必须授予用户SPARQL_UPDATE权限。授予此角色:

     
      
  1. 转到Virtuoso管理界面,即http://host:port/conductor

  2.   
  3. 以用户dba

  4. 身份登录   
  5. 转到系统管理员用户帐户用户

  6.   
  7. 点击修改链接

  8.   
  9. 用户类型设置为 SQL / ODBC登录和WebDAV

  10.   
  11. 从可用的帐户角色列表中选择SPARQL_UPDATE,然后点击 >> 按钮将其添加到右侧 - 手清单。

  12.   
  13. 点击保存按钮。

  14.   

答案 1 :(得分:0)

这个程序,我选择了here,对我有用:

在系统管理员&gt;下以dba身份登录用户帐户,

grant SPARQL_UPDATE to "SPARQL"