Tentativo di connessione a un servizio Web “digest authentication” usando HTTParty vs Net: HTTP (o ecc)
Domanda
Ho cercato di connettersi a un servizio Web che utilizza l'autenticazione digest.
Sono in grado di connettersi in Safari utilizzando utente: password@service.site.com/endpoint
ho provato in Ruby e Rails di connettersi utilizzando HTTParty e Net: HTTP usando le opzioni "di base" auth", ma non ho avuto alcuna fortuna
.Chiedendosi se il HTTParty / Net: HTTP opzione "Basic_Auth" non sta per essere compatibile con un servizio di "digerire auth"?
In caso contrario, c'è un altro modo che io possa collegare?
Soluzione
HTTParty autenticazione di base non è evidentemente compatibile con digest_auth. Ho trovato questo netto: HTTP estensione: https://codesnippets.joyent.com/posts/show/ 1075 e sto scrivendo un metodo per gestire questa situazione, con l'aiuto della gemma 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
Altri suggerimenti
non è stato in grado di raggiungere le codesnippets collegamento sopra riportato oggi, ma il codice è disponibile qui anche https: // gist.github.com/73102 . Ho usato questo successo per l'autenticazione del digest, ma sono imbattuto in problemi con richiesta multipla, ottenendo gli errori 'Stale client nonce' - risolte mediante la generazione di un nuovo nonce all'interno della funzione digest_auth ogni volta che è stato chiamato. Non hai trovato tanto su che quando ho guardato, quindi spero che questo aiuta qualcuno.