Проверка подлинности HTTP-запроса для SPARQL-вставки в конечной точке Virtuoso - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь выполнить вставку SPARQL в график, который я загрузил в Virtuoso, выполняя его через HTTP-запрос к конечной точке Virtuoso.

Для HTTP-запроса я использую axios , и я уже успешно выполнил некоторые запросы SPARQL Select, поэтому моя проблема заключается в процессе аутентификации, который мне нужно сделать для обновления графика.

После долгих исследований я обнаружил, что в Virtuoso включены несколько путей для разных процессов аутентификации:

  • http://<cname>/sparql-auth (аутентификация SQL)
  • http://<cname>/sparql-oauth (OAuth)
  • http://<cname>/sparql-graph-crud-auth (OAuth CRUD)
  • https://<cname>/sparql и https://<cname>/sparql-webid (протокол WebID)

Я хочу сделать его как можно более простым, поэтому я проверил http://<cname>/sparql-auth и смог успешно войти в систему и выполнить запрос вставки. Это означает (я полагаю), что у меня нет проблем с правами доступа для моего пользователя.

Однако, когда я пытаюсь сделать это через HTTP-запрос, я не могу правильно аутентифицировать своего пользователя, я не знаю, как правильно указать имя пользователя и пароль.

Я также обнаружил, что в Virtuoso по умолчанию активирован метод Digest Authentication , поэтому я изменил его на Basic Authentication на пути /sparql-auth, так как Самый простой способ для меня. Я сделал это изменение, используя http://<cname>/conductor Virtuoso.

И все же я не могу правильно аутентифицировать себя с помощью 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 может использовать некоторую кодировку, о которой я не нашел, и я не могу найти ни одного примера SQL-аутентификации для Virtuoso (тип аутентификации, который я пытаюсь использовать), даже для Метод дайджест-аутентификации, который является методом по умолчанию для Virtuoso.

В моем Virtuoso.log ничего не говорится о HTTP-запросах, даже успешных. Я буду исследовать больше об этом, поскольку это может быть из-за конфигурации, которая у меня есть.

Спасибо за помощь!


Наконец-то нашли способ получить желаемый результат:

Мне не удалось найти решение проблемы аутентификации, о которой я говорил здесь , но мне все еще нужно было выполнить эти вставки, поэтому я наконец полностью изменил свой подход и создал свой собственный Java RESTful сервис в качестве посредника между моим приложением и Virtuoso .

Я обнаружил, что Virtuoso предоставляет некоторые библиотеки для Java , и эти библиотеки помогли мне подключиться к Virtuoso с соответствующей авторизацией. Я также должен сказать, что создание службы было непростым, но в итоге оно сработало.

Я надеюсь, что эта информация поможет кому-то подумать над этим подходом раньше, потому что это привело к большой трате времени в моем проекте. Как я уже сказал, я решил собственную проблему выполнения вставок через мое приложение, но проблема аутентификации все еще существует, поэтому не стесняйтесь добавлять любые новые комментарии по этой теме.

1 Ответ

0 голосов
/ 22 июня 2018

Вы можете выполнять INSERT, DELETE и UPDATE (объединяя DELETE и INSERT) через конечную точку SPARQL Query Service, предоставляемую любым экземпляром Virtuoso с использованием языка обновления SPARQL (SPARUL).

Естественно, конечные точки Virtuoso защищены по умолчанию; Вот почему /sparql не работает для вас. Конечная точка /sparql-update используется для базовой дайджест-аутентификации, которая сводится к обычным элементам управления доступом на основе ролей (RBAC) , предназначенным для учетных записей пользователей Virtuoso SQL.

Чтобы включить гораздо более мощную функциональность Контроль доступа на основе атрибутов (ABAC) , которая распространяется на удостоверения веб-масштаба, вам необходимо установить Enterprise Edition плюс Virtuoso Authentication Layer ( VAL) модуль (поставляется в пакете Virtuoso Application Distribution (VAD) ).

Вот простое пошаговое руководство по функциональности ABAC:

  1. Скачать и установить Virtuoso Enterprise Edition .
  2. Загрузите и установите модуль VAL через его VAD.
  3. Используйте вкладку Системный администратор → Пакеты пользовательского интерфейса Проводника, чтобы убедиться, что VAL включен.

    Conductor UI for Configuring Virtuoso Authentication Layer

  4. Вернитесь к конечной точке SPARQL и попытайтесь выполнить INSERT или DELETE для намеченного графика.

Надеюсь, это поможет?

...