سؤال

لقد كنت أحاول الاتصال بخدمة ويب تستخدم مصادقة Digest.

أنا قادر على الاتصال في Safari باستخدام المستخدم: password@service.site.com/endpoint

لقد حاولت في Ruby and Rails للاتصال باستخدام httparty والصافي: HTTP باستخدام خيارات "Auth" الأساسية "، ولكن لم يكن لديك أي حظ.

أتساءل عما إذا كان خيار httparty / net: خيار HTTP "Basic_Auth" سيكون متوافقا مع خدمة "Digest Auth"؟

إذا لم يكن الأمر كذلك، فهل هناك طريقة أخرى قد أتصل بها؟

هل كانت مفيدة؟

المحلول

يبدو أن مصادقة HOVARTY الأساسية غير متوافقة مع Digest_Auth. لقد وجدت هذه الشبكة: امتداد HTTP: https://codesniplepets.joyent.com/posts/show/1075. واكتب طريقة للتعامل مع هذا، بمساعدة جوهرة الكراك 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  

نصائح أخرى

لم يكن قادرا على الوصول إلى رابط CodesNippets المذكور أعلاه اليوم، ولكن الكود متاح أيضا هنا https://gist.github.com/73102.. وبعد لقد استخدمت هذا بنجاح لأصاد مصادقة Digest، ولكن ركض في مشاكل مع طلبات متعددة، والحصول على أخطاء "العميل غير النظير العميل" - حلها عن طريق إنشاء وظيفة جديدة داخل وظيفة Digest_Auth في كل مرة تم استدعاؤها. لم تجد الكثير على ذلك عندما نظرت، لذلك آمل أن يساعد هذا شخص ما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top