3

J'ai essayé de me connecter à un service Web qui utilise l'authentification Digest.Essayer de se connecter à un service Web "digest authentication" en utilisant HTTParty ou Net: HTTP (ou etc)

Je suis en mesure de se connecter à Safari en utilisant l'utilisateur: [email protected]/endpoint

J'ai essayé en Ruby et Rails pour se connecter en utilisant HTTParty et Net: HTTP en utilisant les options auth » « de base » , mais n'a pas eu de chance

Vous vous demandez si le HTTParty/net:.? Option HTTP « de Basic_Auth » ne va pas être compatible avec un « digest auth » Service

Si non, est-il une autre manière Je peux me connecter?

+0

Un exemple de code est assez utile. –

+0

Je vais directement à partir des exemples HTTParty http://rdoc.info/projects/jnunemaker/httparty –

+0

WORKS: wget 'http: // utilisateur: mot de [email protected]/report?vin = vin & type = basic' NE FONCTIONNE PAS: httparty -u utilisateur: mot de passe ' –

Répondre

2

HTTParty basic auth n'est apparemment pas compatible avec digest_auth. J'ai trouvé ce net: l'extension HTTP: https://codesnippets.joyent.com/posts/show/1075 et je écris une méthode pour gérer cela, avec l'aide de la gemme 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

n'a pas pu se rendre à l'codesnippets lien donné ci-dessus aujourd'hui, mais le code est également disponible ici https://gist.github.com/73102. Je l'ai utilisé avec succès pour l'authentification digest, mais j'ai rencontré des problèmes avec plusieurs requêtes, obtenant des erreurs 'Stale client nonce' résolues en générant un nouveau nonce dans la fonction digest_auth chaque fois qu'il a été appelé. Je n'ai pas trouvé grand-chose là-dessus quand j'ai regardé, alors j'espère que cela aidera quelqu'un.