On 02/11/2022 16:29, Shaw, Ryan wrote:
I am using the newer fuseki:endpoint style.
The issue is that when a new dataset is created via the Fuseki UI, the default
endpoints that are created include the following two:
fuseki:endpoint [ fuseki:operation fuseki:update ] ;
fuseki:endpoint [ fuseki:operation fuseki:gsp-rw ] ;
So that is the one that matching "/**=anon"
> /*/data/**
Did you want it on that endpoint?
[ fuseki:operation fuseki:gsp-rw ;
fuseki:name "data"
] ;
It will go to the same dataset.
GSP/quads is hard to distinguished because it's signature is the
content-type.
If I understand correcting the former enables SPARQL UPDATE queries and the
latter enables PUTting a new graph.
Yes - but they don't have to be operations directly on the dataset. They
can be named services of the dataset which tnen match in shio rules :
/*/data.
These endpoints make it difficult to use shiro.ini to restrict updates, since
they use the path of the dataset itself rather than a subpath like /data or
/update.
You don't have to do it that way.
I can go in and remove these endpoints by editing the configuration file for
the dataset, and that’s what I’ve done to address this issue. But it’s less
than ideal, since I can’t just use the UI to create a dataset — I also have to
deploy a modified config file, which can be a little fiddly when you’re running
Fuseki in a cloud container.
Agreed.
You can also change the template file used when creating the dataset. It
is in run/templates/config-tdb2 etc. so you can change it on a per
server basis.
zip up the modified run with the binary and distribute that.
Since I am using this Fuseki instance in a class to teach students SPARQL, it
would be nice to be able to create a dataset in the UI that students can query,
without worrying about them deleting or modifying the dataset, and without
having a separate sysadmin step of pushing a new config file every time I
create a dataset.
On Nov 2, 2022, at 6:55 AM, Andy Seaborne <a...@apache.org> wrote:
Hi Ryan,
Are you using the "fuseki:service*" style for defining the operations?
The newer
fuseki:endpoint [
# SPARQL Graph Store Protcol (read and write)
fuseki:operation fuseki:gsp_rw ;
fuseki:name "data"
] ;
style allows more precise definition of endpoints.
https://jena.apache.org/documentation/fuseki2/fuseki-configuration.html
:serviceReadWriteGraphStore implicitly adds PUT to the dataset (quads mode) and
"/**=anon" applies.
If you use "fuseki:operation fuseki:gsp_rw" there isn't this side effect.
You can go further with fuseki:allowedUsers on individual endpoint/operation.
shiro.ini does not support that but you'll need shiro to do user login.
A server without UI and without admin (currently :-) can Fuseki/main can use
the Jetty security handling - no shiro.ini - but that's a completely separate
setup.
Andy
On 31/10/2022 22:36, Shaw, Ryan wrote:
I am trying to configure fuseki-server so that
* an admin logging in via basic auth can create and update datasets
* anonymous users can only query datasets
My shiro.ini:
[main]
ssl.enabled = false
plainMatcher = org.apache.shiro.authc.credential.SimpleCredentialsMatcher
iniRealm.credentialsMatcher = $plainMatcher
[users]
admin=${ADMIN_PASSWORD}
[roles]
[urls]
# admin functions open to anyone
/$/ping = anon
/$/server = anon
/$/stats = anon
/$/stats/* = anon
# and the rest of the admin functions are restricted
/$/** = authcBasic,user[admin]
# dataset loads and updates are restricted
/*/data/** = authcBasic,user[admin]
/*/update/** = authcBasic,user[admin]
# everything else is open to anyone
/**=anon
With this shiro.ini configuration, anonymous users can still PUT to a dataset
URL to update it. I want to disallow that. How ?