Попытка подключиться к веб-службе «дайджест-аутентификации» с использованием HTTParty или Net: HTTP (или т. Д.) - PullRequest
3 голосов
/ 09 января 2010

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

Я могу подключиться в Safari с помощью пользователя: password@service.site.com/endpoint

Я пытался в Ruby и Rails соединиться, используя HTTParty и Net: HTTP, используя опции "basic" auth ", но не получилось.

Хотите знать, если опция HTTParty / Net: HTTP "basic_auth" не будет совместима со службой "digest auth"?

Если нет, есть ли другой способ, которым я мог бы подключиться?

Ответы [ 2 ]

2 голосов
/ 09 января 2010

Базовая аутентификация HTTParty явно не совместима с digest_auth. Я нашел это расширение Net: HTTP: https://codesnippets.joyent.com/posts/show/1075 и пишу метод для решения этой проблемы с помощью гема Crack http://github.com/jnunemaker/crack:

 def self.decode vin
    url = URI.parse(APP_CONFIG[:vinlink_url])
    Net::HTTP.start(url.host) do |http|
      res = http.head(url.request_uri)
      req = Net::HTTP::Get.new("/report?type=basic&vin=#{vin}")
      req.digest_auth(APP_CONFIG[:vinlink_login], APP_CONFIG[:vinlink_password], res)
      @response = http.request(req)
    end
    if @response.code == "200"
      hash = Crack::XML.parse(@response.body).recursive_downcase_keys!.recursive_symbolize_keys!
    end
  end  
0 голосов
/ 18 мая 2012

Не удалось перейти по ссылке codenippets, приведенной выше сегодня, но код также доступен здесь https://gist.github.com/73102. Я успешно использовал это для дайджест-проверки подлинности, но столкнулся с проблемами с несколькими запросами, получив 'Stale Stale ошибки одноразового номера клиента - устраняются путем генерации нового одноразового номера в функции digest_auth при каждом его вызове. Когда я посмотрел, ничего особенного не нашел, поэтому надеюсь, что это кому-нибудь поможет.

...