Essayer de se connecter à un service Web « authentification digest » à l'aide HTTParty vs Net: HTTP (ou etc)
Question
Je suis en train de se connecter à un service Web qui utilise l'authentification digest.
Je suis capable de se connecter à Safari en utilisant l'utilisateur: password@service.site.com/endpoint
Je l'ai essayé en Ruby et Rails pour se connecter en utilisant HTTParty et Net: HTTP en utilisant les options auth » « de base », mais ne l'ai pas eu de chance
.Vous vous demandez si le HTTParty / Net: l'option HTTP "de Basic_Auth" ne va pas être compatible avec un service "digérer auth"?
Dans le cas contraire, est-il une autre façon que je pourrais connecter?
La solution
HTTParty auth de base est apparemment pas compatible avec digest_auth. J'ai trouvé ce net: l'extension HTTP: https://codesnippets.joyent.com/posts/show/ 1075 et je suis en train d'écrire une méthode pour gérer cela, avec l'aide de la gemme Crack http: // github .com / jnunemaker / craquer :
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
Autres conseils
n'a pas été en mesure d'obtenir les codesnippets lien ci-dessus aujourd'hui, mais le code est également disponible ici https: // gist.github.com/73102. Je l'ai utilisé avec succès ce pour digérer l'authentification, mais eu des problèmes avec la demande multiple, obtenir des erreurs « client nonce Stale » - résolus en générant un nouveau nonce dans la fonction digest_auth chaque fois qu'il a été appelé. Vous ne trouvez pas grand-chose sur que quand je regardais, alors espérons que cela aide quelqu'un.