встроить учетные данные для защищенного GraphDB в cURL?

Мне нравится изучать содержимое моих хранилищ троек с помощью rrdf или SPARQL в R. Я считаю, что они используют cURL под капотом. Они могут принимать дополнительные параметры, помимо адреса конечной точки и самого запроса.

Вот примечания GraphDB по запросам на основе cURL: http://graphdb.ontotext.com/documentation/standard/quick-start-guide.html#query-data-programmatically

Могу поклясться, что в прошлом я подключался к защищенному паролем хранилищу R в прошлом, но я не могу вспомнить, как я это сделал. Это мог быть Stardog или Blazegraph.

Я буду подключаться через VPN. Я надеюсь, что смогу ослабить обычное правило о не встраивании конфиденциальных данных (например, пароля) в простой текстовый URL-адрес.

  • Могу ли я подключиться к защищенному паролем GraphDB (или любому другому RDF4J-совместимому хранилищу троек), включив имя пользователя и пароль как часть URL-адреса?
  • Или я могу установить аутентифицированное соединение / сеанс с GraphDB через cURL вместо установления безопасного соединения в рамках некоторого кода Java или Scala?

person Mark Miller    schedule 04.12.2017    source источник
comment
В идеале вы не захотите отправлять свое имя пользователя / пароль как часть URL-адреса, поскольку кто-то может его перехватить. Что вам нужно, так это включить SSL на вашем сервере graphdb, хотя это не кажется тривиальным. Graphdb работает в Tomcat, но обычные файлы конфигурации Tomcat, похоже, недоступны. Похоже, у них есть класс Java, который запускает Tomcat, что означает, что файлы конфигурации где-то спрятаны в библиотеке. Документация по graphdb в этом отношении немного отрывочна.   -  person Henriette Harmse    schedule 05.12.2017
comment
Да, хороший момент о перехвате URL. Я только что добавил, что буду подключаться через VPN.   -  person Mark Miller    schedule 05.12.2017
comment
@MarkMiller, HTH: stackoverflow.com/a/46338252/7879193   -  person Stanislav Kralin    schedule 01.03.2018


Ответы (1)


Из RCurl: HTTP-аутентификация, когда Сайт отвечает кодом HTTP 401 без WWW-аутентификации:

ключ определяет тип аутентификации (httpauth) как параметр битовой карты (1L), который должен быть передан в rCURL.

library(SPARQL)

graphdb.address.port <- "http://localhost:7200"

selected.repo <- "mymedicalrecrods"

sparql.base <-
  paste0(graphdb.address.port, "/repositories/", selected.repo)

sparql.prefixes <- ""

api.user <- "markmiller"
api.pass <- rstudioapi::askForPassword()

placeholder.q <- paste0(
'
PREFIX owl: <http://www.w3.org/2002/07/owl#>
select *
where {
    graph ?g {
        ?s ?p ?o
    }
}
limit 9
')

sparql.result <-
  SPARQL::SPARQL(
    url = sparql.base,
    query = placeholder.q,
    curl_args = list('userpwd' = paste0(api.user,":", api.pass), "httpauth" = 1L)
  )
sparql.result<- sparql.result$results
person Mark Miller    schedule 12.06.2019