3

ダイジェスト認証を使用しているWebサービスに接続しようとしています。

user:password@service.site.com/endpointを使用してSafariに接続できます

RubyとRailsで、「基本」認証オプションを使用してHTTPartyとNet:HTTPを使用して接続しようとしましたが、うまくいきませんでした。

HTTParty / Net:HTTPの「basic_auth」オプションが「ダイジェスト認証」サービスと互換性がないかどうか疑問に思っていますか?

そうでない場合、私が接続する可能性のある別の方法はありますか?

4

2 に答える 2

2

HTTParty基本認証は明らかにdigest_authと互換性がありません。私はこのNet:HTTP拡張機能を見つけました:https ://codesnippets.joyent.com/posts/show/1075そしてCrack gem 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  
于 2010-01-09T19:10:52.500 に答える
0

今日、上記のコードスニペットのリンクにアクセスできませんでしたが、コードはhttps://gist.github.com/73102からも入手できます。私はこれをダイジェスト認証に正常に使用しましたが、複数のリクエストで問題が発生し、「古いクライアントナンス」エラーが発生しました-呼び出されるたびにdigest_auth関数内に新しいナンスを生成することで解決しました。私が見たとき、それについてはあまり見つけられなかったので、これが誰かを助けることを願っています。

于 2012-05-17T21:20:13.000 に答える