Virtuoso 端点中 SPARQL 插入的 HTTP 请求身份验证
HTTP Request authentication for SPARQL Insert in Virtuoso endpoint
我正在尝试在已加载到 Virtuoso 中的图形中执行 SPARQL 插入,通过针对 Virtuoso 端点的 HTTP 请求来执行此操作。
对于我正在使用的 HTTP 请求 axios,并且我已经成功地进行了一些 SPARQL Select 查询,所以我的问题在于我需要执行的更新图形的身份验证过程.
经过大量研究,我发现 Virtuoso 为不同的身份验证过程启用了一些路径:
http://<cname>/sparql-auth
(SQL认证)
http://<cname>/sparql-oauth
(OAuth)
http://<cname>/sparql-graph-crud-auth
(OAuth 增删改查)
https://<cname>/sparql
和 https://<cname>/sparql-webid
(WebID 协议)
我想让它尽可能简单,所以我检查了 http://<cname>/sparql-auth
并且我已经能够登录并成功执行插入查询。这意味着(我猜)我的用户没有任何权限问题。
但是,当我尝试通过 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 世界中确实是个新手,我仍然迷失在所有内容中。
提前致谢!!
由于一些评论编辑了问题:
我也尝试过 Post 请求,但没有任何变化。
我尝试过的另一种方法是使用 http://myUserName:myPassword@localhost:8890/sparql-auth
格式,但我得到了完全相同的响应。
我完全不确定我是否通过 axios
调用和 /sparql-auth
路径传递了完全相同的字符串。 Virtuoso 可能使用了一些我没有发现的编码,而且我无法找到 Virtuoso 的 SQL 身份验证 的任何示例(我正在尝试的身份验证类型使用),甚至对于 Virtuoso 的默认方法 Digest Authentication 方法也不行。
我的 Virtuoso.log 中没有任何关于 HTTP 请求的信息,甚至没有成功的请求。我将对此进行更多研究,因为这可能是因为我拥有的配置。
感谢您的帮助!
终于找到了得到我想要的结果的方法:
我还没有找到解决我在这里提到的身份验证问题的方法,但我仍然需要做那些插入,所以我终于 完全改变了我的方法并创建了我自己的JavaRESTful服务作为我的应用程序和Virtuoso[=88之间的中介=].
我发现 Virtuoso 为 Java 提供了一些库,这些库帮助我连接到 Virtuoso 具有适当的授权。我也不得不说创建服务并不容易,但它终于成功了。
我希望这些信息可以帮助人们更早地考虑这种方法,因为它让我在我的项目中浪费了大量时间。正如我所说,我已经解决了我自己通过我的应用程序进行插入的问题,但身份验证问题仍然存在,所以请随时添加有关此主题的任何新评论。
您可以通过任何使用 SPARQL 更新语言 (SPARUL) 的 Virtuoso 实例提供的 SPARQL 查询服务端点执行插入、删除和更新(结合删除和插入)。
当然,Virtuoso 端点默认受到保护;这就是 /sparql
对您不起作用的原因。 /sparql-update
端点用于基本的摘要身份验证,归结为传统的 Role-based Access Controls (RBAC) 作用域为 Virtuoso SQL 用户帐户。
启用更强大的 Attribute-based Access Controls (ABAC) functionality, which is scoped to Web-scale identities, you need to install the Enterprise Edition plus the Virtuoso Authentication Layer (VAL) module (delivered by a Virtuoso Application Distribution (VAD) 包)。
下面是有关 ABAC 功能的简单分步指南:
- 下载并安装Virtuoso Enterprise Edition。
- 通过其 VAD 下载并安装 VAL 模块。
使用 Conductor System Admin → Packages 选项卡 UI 确认 VAL 已启用。
Return 到您的 SPARQL 端点并尝试针对命名图执行 INSERT
或 DELETE
。
希望对您有所帮助?
我正在尝试在已加载到 Virtuoso 中的图形中执行 SPARQL 插入,通过针对 Virtuoso 端点的 HTTP 请求来执行此操作。
对于我正在使用的 HTTP 请求 axios,并且我已经成功地进行了一些 SPARQL Select 查询,所以我的问题在于我需要执行的更新图形的身份验证过程.
经过大量研究,我发现 Virtuoso 为不同的身份验证过程启用了一些路径:
http://<cname>/sparql-auth
(SQL认证)http://<cname>/sparql-oauth
(OAuth)http://<cname>/sparql-graph-crud-auth
(OAuth 增删改查)https://<cname>/sparql
和https://<cname>/sparql-webid
(WebID 协议)
我想让它尽可能简单,所以我检查了 http://<cname>/sparql-auth
并且我已经能够登录并成功执行插入查询。这意味着(我猜)我的用户没有任何权限问题。
但是,当我尝试通过 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 世界中确实是个新手,我仍然迷失在所有内容中。
提前致谢!!
由于一些评论编辑了问题:
我也尝试过 Post 请求,但没有任何变化。
我尝试过的另一种方法是使用 http://myUserName:myPassword@localhost:8890/sparql-auth
格式,但我得到了完全相同的响应。
我完全不确定我是否通过 axios
调用和 /sparql-auth
路径传递了完全相同的字符串。 Virtuoso 可能使用了一些我没有发现的编码,而且我无法找到 Virtuoso 的 SQL 身份验证 的任何示例(我正在尝试的身份验证类型使用),甚至对于 Virtuoso 的默认方法 Digest Authentication 方法也不行。
我的 Virtuoso.log 中没有任何关于 HTTP 请求的信息,甚至没有成功的请求。我将对此进行更多研究,因为这可能是因为我拥有的配置。
感谢您的帮助!
终于找到了得到我想要的结果的方法:
我还没有找到解决我在这里提到的身份验证问题的方法,但我仍然需要做那些插入,所以我终于 完全改变了我的方法并创建了我自己的JavaRESTful服务作为我的应用程序和Virtuoso[=88之间的中介=].
我发现 Virtuoso 为 Java 提供了一些库,这些库帮助我连接到 Virtuoso 具有适当的授权。我也不得不说创建服务并不容易,但它终于成功了。
我希望这些信息可以帮助人们更早地考虑这种方法,因为它让我在我的项目中浪费了大量时间。正如我所说,我已经解决了我自己通过我的应用程序进行插入的问题,但身份验证问题仍然存在,所以请随时添加有关此主题的任何新评论。
您可以通过任何使用 SPARQL 更新语言 (SPARUL) 的 Virtuoso 实例提供的 SPARQL 查询服务端点执行插入、删除和更新(结合删除和插入)。
当然,Virtuoso 端点默认受到保护;这就是 /sparql
对您不起作用的原因。 /sparql-update
端点用于基本的摘要身份验证,归结为传统的 Role-based Access Controls (RBAC) 作用域为 Virtuoso SQL 用户帐户。
启用更强大的 Attribute-based Access Controls (ABAC) functionality, which is scoped to Web-scale identities, you need to install the Enterprise Edition plus the Virtuoso Authentication Layer (VAL) module (delivered by a Virtuoso Application Distribution (VAD) 包)。
下面是有关 ABAC 功能的简单分步指南:
- 下载并安装Virtuoso Enterprise Edition。
- 通过其 VAD 下载并安装 VAL 模块。
使用 Conductor System Admin → Packages 选项卡 UI 确认 VAL 已启用。
Return 到您的 SPARQL 端点并尝试针对命名图执行
INSERT
或DELETE
。
希望对您有所帮助?