Я пишу скрипт Ruby для подключения к веб-сайту REST API. Веб-сайт аутентифицируется с использованием LDAP/SSO с использованием учетных данных AD, поэтому не требуется базовая аутентификация или пользователь/пароль.Как подключиться к HTTP Rest API для аутентификации с LDAP
Это код до сих пор:
resource_http = Net::HTTP.new(webserver.company.com, 443)
resource_http.use_ssl = true
resource_http.verify_mode = OpenSSL::SSL::VERIFY_NONE
resource_request = Net::HTTP::Post.new("/api/endpoint")
resource_request.set_form_data({"chocolate"=>"yes","beer"=>"yes"})
resource_response = resource_http.request(resource_request)
Но я получаю сообщение об ошибке авторизации:
Net::HTTPUnauthorized 401 Authorization Required
Играя с Net :: LDAP, я могу проверить подлинность своих учетных данных на компьютере :
ldap = Net::LDAP.new
ldap.host = "ldap.company.com"
ldap.port = "389"
ldap.auth "[email protected]", "password"
ldap.bind
Но я не знаю, как «прикрепить» или передать эту информацию LDAP в HTTP-запросе.
Все мои поисковые запросы Google позволяют мне включить SSO/аутентификацию в приложении для веб-сайта, но я не пытаюсь это сделать, я хочу подключиться к моему скрипту Ruby на существующий веб-сайт с проверкой подлинности LDAP.
Обновление # 1 Некоторые форумы Ruby указали мне на gem HTTPI и использовали адаптер curb. Этот адаптер использует библиотеку Curl для обработки аутентификации Kerberos/SPNEGO. Однако мне не удалось заставить установщик curb работать с библиотекой curl, которую они связывают на своем веб-сайте (для компьютера под управлением Windows).
Я переместил код на Python, используя модуль kerberos. Я могу сгенерировать билет и добавить его в заголовки HTTP-запросов, которые получают аутентификацию API REST и возвращают нужные мне данные.
Я все еще учусь, поэтому, даже если мой код работает на Python, я бы хотел, чтобы он работал над Ruby.
Пример кода в Python: https://gist.github.com/DevOpsCow/d374300304d7beef8a03
Добро пожаловать в переполнение стека. Вот небольшой совет: не говорите, что это глупый вопрос, а затем призывают нас быть нежными. Задавайте хорошие вопросы, убедитесь, что вы провели исследование и предоставили необходимую информацию. http://meta.stackoverflow.com/q/261592/128421 и http://tinyurl.com/stack-hints и http://catb.org/esr/faqs/smart-questions.html - хорошее чтение. –