Authentication Virtuoso端点中SPARQL插入的HTTP请求身份验证

Authentication Virtuoso端点中SPARQL插入的HTTP请求身份验证,authentication,httprequest,sparql,virtuoso,Authentication,Httprequest,Sparql,Virtuoso,我正试图在已加载到Virtuoso的图形中执行SPARQL插入,通过针对Virtuoso端点的HTTP请求来执行 对于我正在使用的HTTP请求,我已经成功地进行了一些SPARQL Select查询,因此我的问题在于更新图形所需的身份验证过程 经过大量研究,我发现Virtuoso为不同的身份验证过程启用了一些路径: http:///sparql-auth(SQL身份验证) http:///sparql-oauth(OAuth) http:///sparql-graph-crud-auth(OAu

我正试图在已加载到Virtuoso的图形中执行SPARQL插入,通过针对Virtuoso端点的HTTP请求来执行

对于我正在使用的HTTP请求,我已经成功地进行了一些SPARQL Select查询,因此我的问题在于更新图形所需的身份验证过程

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

  • http:///sparql-auth
    (SQL身份验证)
  • http:///sparql-oauth
    (OAuth)
  • http:///sparql-graph-crud-auth
    (OAuth积垢)
  • https:///sparql
    https:///sparql-webid
    (WebID协议)
我想让它尽可能简单,所以我检查了
http:///sparql-auth
我已经能够成功登录并执行插入查询。这意味着(我猜)我的用户没有任何权限问题

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

我还发现,Virtuoso在默认情况下激活了摘要身份验证方法,因此我将其更改为
/sparql auth
路径上的基本身份验证,因为这是最简单的方法。我已使用
http:///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的世界还是很陌生,我仍然对一切都迷茫

提前谢谢你


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

我也尝试过一个Post请求,但没有任何变化

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

我完全不确定是否通过
axios
调用和
/sparql auth
路径传递了完全相同的字符串。Virtuoso可能会使用一些我没有找到的编码,我找不到Virtuoso的SQL身份验证示例(我尝试使用的身份验证类型),甚至找不到Digest身份验证方法,这是Virtuoso的默认方法

我的Virtuoso.log中没有关于HTTP请求的内容,即使是成功的请求也没有。我将对此进行更多的研究,因为这可能是因为我的配置

谢谢你的帮助


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

我还没有找到解决我在这里提到的身份验证问题的方法,但我仍然需要进行这些插入,因此我最终完全改变了我的方法,并创建了我自己的Java RESTful服务,作为我的应用程序和Virtuoso之间的中介

我发现Virtuoso为Java提供了一些库,这些库帮助我通过适当的授权连接到Virtuoso。我还必须说,创建服务并不容易,但它最终成功了


我希望这些信息有助于人们更早地思考这种方法,因为它在我的项目中浪费了我大量的时间。正如我所说,我已经解决了通过我的应用程序进行插入的问题,但身份验证问题仍然存在,因此请随意添加有关此主题的任何新注释。

您可以执行插入、删除和更新(结合删除和插入)通过任何使用SPARQL更新语言(SPARUL)的Virtuoso实例提供的SPARQL查询服务端点

当然,默认情况下,Virtuoso端点受到保护;这就是为什么
/sparql
不适合您的原因。
/sparql更新
端点用于基本摘要身份验证,该身份验证可归结为传统范围的Virtuoso SQL用户帐户

要启用更强大的功能(适用于Web级别的标识),您需要安装Enterprise Edition和模块(由软件包提供)

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

  • 下载并安装
  • 通过VAD下载并安装VAL模块
  • 使用系统管理员→ 打包导体UI的选项卡,以确认VAL已启用

  • 返回SPARQL端点,并尝试以命名图为目标执行
    INSERT
    DELETE


  • 我希望这有帮助

    Get HTTP请求仅用于请求而不是更新。作为更新插入需要Post请求imo。它也不适用于Post HTTP请求。。。相同的身份验证问题…摘要身份验证链接到./sparql身份验证。另一方面,基本身份验证是针对端点的./sparql的,但是如果我更改了/sparql身份验证的身份验证,指定了基本身份验证,那么它不应该工作吗?如果没有,我怎么做摘要认证?你可能会发现它的用处。非常感谢!!!这似乎完全是正确的做法。因为我找到了一个解决方法,所以我不会再修改代码来实现它,但是如果我将来需要这样做,我会完全尝试你的解决方案。