Tentando conectar -se a um serviço da web de "Digest Authentication" usando httparty ou net: http (ou etc)
Pergunta
Eu tenho tentado me conectar a um serviço da Web que está usando a autenticação Digest.
Posso me conectar no Safari usando o usuário: senha@service.site.com/endpoint
Eu tentei em Ruby e Rails para conectar usando httparty e net: http usando as opções "Basic" Auth ", mas não tive sorte.
Quer saber se a opção httparty/net: http "basic_auth" não será compatível com um serviço "Digest Auth"?
Caso contrário, existe outra maneira de me conectar?
Solução
Auth HttParty aparentemente não é compatível com Digest_Auth. Encontrei esta rede: extensão HTTP: https://codesnippets.joyent.com/postss/show/1075 E estou escrevendo um método para lidar com isso, com a ajuda da gema de 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
Outras dicas
Não foi capaz de chegar ao link CodesNippets, dado acima hoje, mas o código também está disponível aqui https://gist.github.com/73102. Eu usei isso com sucesso para autenticação de digerir, mas tive problemas com os erros de várias solicitações, obtendo erros de 'cliente obsoleto' - resolvidos gerando um novo nonce dentro da função Digest_Auth cada vez que ela era chamada. Não achei muito quando olhei, então espero que isso ajude alguém.