SPARQL的HTTP请求身份验证在Virtuoso端点

时间:2018-05-16 16:57:34

标签: authentication httprequest sparql virtuoso

我正在尝试在Virtuoso中加载的Graph中执行SPARQL插入,通过针对Virtuoso端点的HTTP请求执行此操作。

对于我正在使用axios的HTTP请求,我已经成功完成了一些SPARQL Select查询,因此我的问题在于我需要为更新图表而执行的身份验证过程。

经过大量研究后,我发现Virtuoso已经为不同的身份验证过程启用了一些路径:

  • http://<cname>/sparql-auth(SQL身份验证)
  • http://<cname>/sparql-oauth(OAuth)
  • http://<cname>/sparql-graph-crud-auth(OAuth CRUD)
  • https://<cname>/sparqlhttps://<cname>/sparql-webid(WebID协议)

我想让它尽可能简单,所以我检查了http://<cname>/sparql-auth,我已经能够登录并成功执行Insert查询。这意味着(我猜)我的用户没有任何权限问题。

但是当我尝试通过HTTP请求时,我无法正确验证我的用户,我不知道如何以正确的方式指定用户名和密码。

我还发现Virtuoso默认激活了摘要式身份验证方法,因此我将其更改为/sparql-auth路径上的基本身份验证因为这对我来说是最简单的方法。我使用Virtuoso的http://<cname>/conductor进行了此更改。

然而,我无法通过HTTP Get请求正确验证自己,收到 HTTP状态代码401(未授权)

这是我如何提出请求:

axios.get('http://localhost:8890/sparql-auth?query=' + encodeURIComponent(pruebaInsertQuery),{
        auth: {  // This is provided by axios, to perform an HTTP Basic auth
            username: 'myUserName',
            password: 'myPassword'
        },
    })
    .then((response) => {
        console.log(response);
    })
    .catch((error) => {
        console.log(error);
    });

我已经完成了Virtuoso的每一个教程和指南,但我在SPARQL,RDF和Virtuoso世界中都是新手,我仍然迷失在一切。

提前谢谢!!

由于某些评论而编辑的问题:

我也尝试过发布请求,但没有任何变化。

我尝试过的另一种方法是使用http://myUserName:myPassword@localhost:8890/sparql-auth格式,但我得到的答案完全相同。

我完全不确定是否通过axios调用和/sparql-auth路径传递完全相同的字符串。 Virtuoso可能会使用一些我没有找到的编码,而且我无法找到任何关于Virtuoso的 SQL身份验证的例子(我试图使用的身份验证类型),甚至没有摘要式身份验证方法,这是Virtuoso的默认方法。

我的Virtuoso.log中没有关于HTTP请求的内容,甚至没有成功的内容。由于我的配置,我会对此进行更多研究。

感谢您的帮助!

终于找到了获得我想要的结果的方法:

我无法找到我在此处说明的身份验证问题的解决方案,但我仍然需要执行这些插入操作,因此我终于完全改变了我的方法并创建了我自己的 Java RESTful服务作为我的应用程序和 Virtuoso 之间的中介。

我发现 Virtuoso Java 提供了一些库,这些库帮助我使用适当的授权连接到 Virtuoso 。我还必须说创建服务并不容易,但它终于奏效了。

我希望这些信息可以帮助别人更早地思考这种方法,因为它在我的项目中浪费了很多时间。正如我所说的,我已经解决了自己在应用程序中进行插入的问题,但是身份验证问题仍然存在,所以请随意添加关于此主题的任何新评论。

1 个答案:

答案 0 :(得分:3)

您可以使用SPARQL更新语言(SPARUL)通过任何Virtuoso实例提供的SPARQL查询服务终结点来执行INSERT,DELETE和UPDATE(结合DELETE和INSERT)。

自然,默认情况下,Virtuoso端点受保护;这就是/sparql对您不起作用的原因。 /sparql-update端点用于基本的摘要式身份验证,归结为适用于Virtuoso SQL用户帐户的常规Role-based Access Controls (RBAC)

要启用功能更强大的Attribute-based Access Controls (ABAC)功能(适用于Web规模的身份),您需要安装企业版以及Virtuoso Authentication Layer (VAL)模块(由Virtuoso Application Distribution (VAD)软件包提供) )。

以下是有关ABAC功能的简单分步指南:

  1. 下载并安装Virtuoso Enterprise Edition
  2. 通过其VAD下载并安装VAL模块。
  3. 使用Conductor UI的系统管理员→程序包标签来确认已启用VAL。

    Conductor UI for Configuring Virtuoso Authentication Layer

  4. 返回到SPARQL端点,并尝试执行针对命名图的INSERTDELETE

我希望这会有所帮助吗?