Как использовать сервисы Basic Authentication?

10

Как использовать Сервис Базовой Аутентификации модуля?

Я хочу добавить базовую авторизацию http для моего сервиса. Я установил его и включил в своей конфигурации конечной точки. Я получил это «Базовая аутентификация HTTP Services_basic_auth не имеет доступных настроек» в моей конфигурации конечной точки. где находится страница настроек?

Риялул Фикри
источник

Ответы:

11

Модуль аутентифицирует вызов веб-службы для учетных записей drupal.

  1. Включить модуль
  2. Настройка пользователя drupal
  3. Сделайте вызов веб-службы с учетными данными пользователя.

Обратите внимание, что при базовой аутентификации учетные данные могут быть перехвачены, если SSL не используется.

Модуль использует стандартные заголовки аутентификации PHP и отправляет стандартную форму входа в систему drupal, не проверяя какие-либо конкретные роли или разрешения. Так что любой друпал пользователь будет работать.

Сделайте тестовый вызов веб-сервиса с помощью curl или wget, чтобы протестировать его. В ответе на вызов curl stackoverflow есть также инструкции о том, как вызвать PHP .

Interlated
источник
Это полностью отличается от использования этой структуры в одном вызове URL? myusername: mypassword@example.com/callback
Citricguy
@Citricguy не отличается. Этот синтаксис обеспечивается схемой URI en.wikipedia.org/wiki/URI_scheme . Я бы так не поступил. Некоторые службы REST можно протестировать в браузере, и я бы опасался, что учетные данные вошли в историю браузера. С https учетные данные зашифрованы. Это также зависит от библиотеки http, php http может быть в порядке, см. Комментарий на php.net/manual/en/features.http-auth.php#44686 . Браузеры Microsoft больше не поддерживают синтаксис, поэтому, если вы используете javascript для выполнения вызова, он может не работать. Некоторые API-интерфейсы используют этот метод goo.gl/eS9mqv
Отложено:
Извините, способ осуществления вызова не влияет на вызов. Так что тестирование с u: p@host.com, если оно работает, нормально. Я говорю, что могут быть такие проблемы. Я бы подумал, что заголовки, а не URL как можно раньше, упростят тестирование.
Отмечено
4

Вышеупомянутый модуль используется для аутентификации вызовов сервисов, используя метод аутентификации Basic access . Вы будете использовать свое имя пользователя и пароль Drupal для аутентификации вызовов сервисов, добавив заголовок авторизации к вызову сервиса следующим образом.

Когда пользовательский агент хочет отправить учетные данные аутентификации сервера, он может использовать заголовок авторизации.

Заголовок авторизации построен следующим образом:

Имя пользователя и пароль объединяются в строку «имя пользователя: пароль»

Результирующий строковой литерал затем кодируется с использованием варианта Base64 RFC2045-MIME, за исключением не ограниченного 76 символами / строкой. Затем перед кодированной строкой ставится метод авторизации и пробел, т.е.

Например, если пользовательский агент использует «Aladdin» в качестве имени пользователя и «open sesame» в качестве пароля, тогда заголовок формируется следующим образом :.

Авторизация: базовая QWxhZGRpbjpvcGVuIHNlc2FtZQ ==

Например, ниже приведен вызов с использованием curl.

curl -H "Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" http://www.example.com/endpoint/yourservice
Анил Сагар
источник
2
да, я уже прочитал это, но все еще не знаете, как это реализовать? что делать после установки модуля? любая помощь будет отличной. спасибо
Риялул Фикри
2
  1. После включения модуля перейдите в Структура> Сервисы
  2. Выберите конечную точку и нажмите « Изменить». введите описание изображения здесь

  3. Используйте инструмент, такой как https://addons.mozilla.org/fr/firefox/addon/restclient/, чтобы проверить ваш клиент:

введите описание изображения здесь

Примечание: у меня были проблемы с этим, поскольку, хотя опция базовой аутентификации HTTP была отмечена, при вызове ресурса этой конечной точки возвращалось 200 вместо 401 . То есть модуль не смог защитить мою конечную точку.

Проблема появляется в:

https://www.drupal.org/project/services_basic_auth
version: 7.x-1.4

Я решил это сделать патч для модуля:

https://www.drupal.org/node/2734207

Артур Кендзиор
источник
1

Что может быть не так: после установки всех настроек:

  1. включить сервис-модуль базовой аутентификации
  2. например, создать конечную точку API служб: получить все
  3. установить флажок «HTTP базовая аутентификация» на странице редактирования
  4. создать пользователя

И заметил, что если вы не отключите разрешение «Просмотр опубликованного контента», то любой пользователь может получить доступ к конечной точке API сервиса с возвращенным результатом.

user57293
источник
0

После установки Services Basic Authenticationмодуля перейдите в настройки REST вашего сервера:

/admin/structure/services

Введите Editопцию и внизу есть флажок:

HTTP basic authentication

Включите его и нажмите кнопку Сохранить.

Михал Пжибылович
источник
Какой пользователь: пароль я буду использовать для базовой аутентификации HTTP?
AshwinP
-1

Не забудьте использовать модуль доступа к контенту.

Добавление дополнительных деталей по запросу MPD.

Если вы не используете модуль доступа к контенту, то пользователь увидит весь контент, включая созданный другими, который он не должен был видеть. Например, пользователь A сохранил личные данные, которые пользователь B не должен видеть, или наоборот. Модуль базовой аутентификации Services включает аутентификацию, но не обеспечивает доступ к контенту. Модуль Content Access обеспечивает это. Если вы не используете контроль доступа к контенту, то нет смысла аутентифицировать пользователя.

techwestcoastsfosea
источник
Можете ли вы рассказать о том, как этот модуль может удовлетворить потребности пользователя?
mpdonadio
Пожалуйста, смотрите мое обновление в оригинальном ответе.
techwestcoastsfosea