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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top