httparty 또는 net : http (또는 등)를 사용하여 "다이제스트 인증"웹 서비스에 연결하려고합니다.
문제
Digest 인증을 사용하는 웹 서비스에 연결하려고 노력했습니다.
user : password@service.site.com/endpoint를 사용하여 Safari로 연결할 수 있습니다.
나는 루비와 레일에서 httparty and net : http를 사용하여 "기본"인증 "옵션을 사용하여 연결하려고 시도했지만 운이 없었습니다.
HTTPARTY/NET : HTTP "BASIC_AUTH"옵션이 "Digest Auth"서비스와 호환되지 않을지 궁금하십니까?
그렇지 않다면 연결할 수있는 또 다른 방법이 있습니까?
해결책
httparty 기본 인증은 Digest_auth와 호환되지 않습니다. 이 그물을 찾았습니다 : HTTP 확장 : https://codesnippets.joyent.com/posts/show/1075 그리고 균열 보석의 도움으로 이것을 처리하는 방법을 작성하고 있습니다. 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
다른 팁
오늘 위에 주어진 CodesNippets 링크에 도달 할 수 없었지만 여기에서도 코드도 사용할 수 있습니다. https://gist.github.com/73102. 나는 이것을 Digest 인증에 성공적으로 사용했지만 여러 요청에 문제가 발생하여 'Stale Client Nonce'오류를 얻었습니다. 내가 보았을 때 그에 대해 많이 찾지 못했기 때문에 이것이 누군가를 도울 수 있기를 바랍니다.
제휴하지 않습니다 StackOverflow