Faraday: تمرير عنوان URL مع المصادقة الأساسية المضمنة معطل

تم إنشاؤها على ١ سبتمبر ٢٠٢١  ·  5تعليقات  ·  مصدر: lostisland/faraday

عطلت إعادة بناء البرامج الوسيطة للمصادقة الأخيرة تمرير عنوان URL مع المصادقة الأساسية المضمنة في جزء معلومات المستخدم من URI ، لأن basic_auth لا يزال مستخدمًا في url_prefix= https://github.com/lostisland/faraday/blob/0f9626c48d0daa24888cb4e5e7962c106a48d97f/ lib / faraday / connection.rb # L364 -L367

~/src/github.com/lostisland/faraday (1.x) $ ruby -Ilib -rfaraday -rfaraday/net_http -rjson -e "puts JSON.load(Faraday.new(url: 'https://user:[email protected]/headers').get.body)['headers']['Authorization']"
WARNING: `Faraday::Connection#basic_auth` is deprecated; it will be removed in version 2.0.
While initializing your connection, use `#request(:basic_auth, ...)` instead.
See https://lostisland.github.io/faraday/middleware/authentication for more usage info.
Basic dXNlcjpwYXNzd29yZA==
~/src/github.com/lostisland/faraday (main) $ ruby -Ilib -rfaraday -rfaraday/net_http -rjson -e "puts JSON.load(Faraday.new(url: 'https://user:[email protected]/headers').get.body)['headers']['Authorization']"
lib/faraday/connection.rb:365:in `block in url_prefix=': undefined method `basic_auth' for #<Faraday::Connection:0x00007fed250abaa8 @parallel_manager=nil, @headers={}, @params={}, @options=#<Faraday::RequestOptions (empty)>, @ssl=#<Faraday::SSLOptions (empty)>, @default_parallel_manager=nil, @manual_proxy=nil, @builder=#<Faraday::RackBuilder:0x00007fed25092210 @adapter=Faraday::Adapter::NetHttp, @handlers=[Faraday::Request::UrlEncoded]>, @url_prefix=#<URI::HTTPS https://user:[email protected]/headers>> (NoMethodError)
    from lib/faraday/connection.rb:506:in `with_uri_credentials'
    from lib/faraday/connection.rb:364:in `url_prefix='
    from lib/faraday/connection.rb:84:in `initialize'
    from lib/faraday.rb:96:in `new'
    from lib/faraday.rb:96:in `new'
    from -e:1:in `<main>'

يتوفر اختبار يوضح ذلك هنا: https://github.com/lostisland/faraday/compare/1.x...etiennebarrie : test-basic-auth-in-url:

it 'uses User Information from the URI for Basic authentication' do
  conn.url_prefix = 'http://user:[email protected]'
  expect(conn.url_prefix.to_s).to eq('http://sushi.com/')
  request = conn.build_request(:get)
  expect(request.headers['Authorization']).to eq("Basic #{Base64.strict_encode64('user:password')}")
end

يجب أن نقرر ما إذا كنا نريد إصلاح هذا أو إزالة الدعم لهذه الميزة.

شاهد تعليق etiennebarrie في https://github.com/lostisland/faraday/issues/1308#issuecomment -909109525_

bug unconfirmed

التعليق الأكثر فائدة

مرحبًا ، هذه حالة استخدام أخرى: مطاط / مطاطي-ياقوتي # 1479

ال 5 كومينتر

etiennebarrie أقتبس أفكارك من التعليق:

على الرغم من أنني لا أعارض إهمال basic_auth والترخيص في الاتصال ، أعتقد أن القدرة على الحصول على مصادقة أساسية مضمنة في عنوان URL أمر مفيد حقًا (يمكن تهيئته في أسرار على سبيل المثال).

أنا أفكر بجدية في إزالة الدعم لهذا.
يبدو أن هذه الممارسة قد تم إهمالها مرة أخرى في عام 2005 وأن معظم المتصفحات الرئيسية أسقطت دعمها أيضًا.

أشعر بالفضول أيضًا بشأن المثال أعلاه:

يمكن تهيئته في أسرار على سبيل المثال
لا أرى كيف أن استخدام البرنامج الوسيط basic_auth لن يسمح باستخدام الأسرار؟
ألا يعمل شيء مثل هذا؟

# Faraday 1.x
conn = Faraday.new(url_with_no_userinfo) do |f|
  conn.request :basic_auth, Secrets.basic_auth_user, Secrets.basic_auth_pass
  ...
end

نقوم في الأساس بما يلي:

def connection
  Faraday.new(url: server) do
    # other config
  end
end

def server
  if global?
    secrets.global
  elsif something?
    secrets.other
  elsif something_else?
    secrets.another
  end
end

لذلك نحتاج فقط إلى سر واحد لكل عنوان URL / مستخدم / كلمة مرور.


يمكننا تقسيم كل سر تمامًا إلى ثلاثة ، أو حتى الاحتفاظ بسرية عنوان URL الفردي ولكننا نستخرج كلمة مرور المستخدم قبل تمريرها إلى Faraday.

نعم هذا ما اعتقدته ، شكرًا لتأكيد

مرحبًا ، هذه حالة استخدام أخرى: مطاط / مطاطي-ياقوتي # 1479

شكرًا على الإدخال tagliala ، نريد في النهاية إرضاء المجتمع ، لذلك من المهم فهم مقدار استخدام هذه الميزة من أجل تحديد مستقبلها.

من الواضح أن هذه مكتبة واسعة الانتشار ، لذا نشكرك كثيرًا على الإشارة إليها

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات