将Jena Fuseki的CURL访问限制为仅本地主机

时间:2018-10-03 07:46:00

标签: tomcat curl shiro fuseki

我正在整理RDF服务器。该项目的要求是: 1)可在线查询的三重存储。 2)每周需要生成两个RDF; (基于新数据导入) 3)这些RDF的生成和导入是自动进行的。

这是我到目前为止所做的: 我在测试服务器和Jena Fuseki上安装了Tomcat;我已经使用web.xmlshiro.iniconfig.ttl文件对它进行了配置。

RDF文件是在Python中自动生成的,并在新数据导入结束时触发。该脚本在服务器(本地主机)上运行,并使用RDFLIB生成文件。然后我使用CURL删除旧数据集并导入新数据集。

当我去另一台计算机并通过http://192.168.0.12:8080/fuseki访问Triplestore时,我可以查询数据,但是(按预期)不能更新或删除Triple内容。...但是,通过CURL可以远程删除和上传新图形(有效地使任何人都可以在我的服务器上这样做)

CURL -X POST -H content-type:application/rdf+xml -T /path/to/my/file/triples.xml -G http://192.168.0.12:8080/fuseki/mygraph --data-urlencode graph = http://192.168.0.12:8080/fuseki/mygraph/mydataset

我在这里陷入困境,为什么通过GUI访问而不是CURL时localhostfilter起作用?我是否忘记了过滤器/安全性选项?有没有更好的方法可以自动完成每周更新?

值得一提的是,我的config.ttl文件仅包含与脚本超时有关的配置。 这是我的shiro.ini文件:

[main]
# Development
ssl.enabled = false

plainMatcher=org.apache.shiro.authc.credential.SimpleCredentialsMatcher
#iniRealm=org.apache.shiro.realm.text.IniRealm
iniRealm.credentialsMatcher = $plainMatcher

localhostFilter=org.apache.jena.fuseki.authz.LocalhostFilter

[users]
# Implicitly adds "iniRealm =  org.apache.shiro.realm.text.IniRealm"
admin=Change_On_Production!

[roles]

[urls]
## Control functions open to anyone
/$/status = anon
/$/ping   = anon
/**/query = anon
/**/data** = authcBasic,user[admin]
/**/update** = authcBasic,user[admin]
/**/upload** = authcBasic,user[admin]
/**/manage** = authcBasic,user[admin]

## and the rest are restricted to localhost.
#/$/** = anon

/**/update** = localhostFilter
/**/upload** = localhostFilter
/**/manage** = localhostFilter
/**/data** = localhostFilter
/**/get** = localhostFilter

# Everything else
/**=anon

0 个答案:

没有答案