سؤال

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

استنادًا إلى فهمي (المحدود) ، يمكنني إضافة معالجات متعددة إلى المباراة الافتتاحية. ومع ذلك ما زلت أحصل على استجابة 401. لقد راجعت اسم المستخدم وكلمة المرور صالحة. لست متأكدًا مما إذا كانت ملفات تعريف الارتباط مطلوبة للقيام بذلك ، وإذا كان الأمر كذلك ، كيف سيتم تضمينها. أي اقتراحات؟

baseUrl = 'server:8070/nexus-webapp-1.3.3/service/local'

params = {"[key]":"[value]"}

data = urllib.urlencode(params)

# create a password manager
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()

# Add the username and password as supplied
password_mgr.add_password(None, baseUrl, username, password)

handler = urllib2.HTTPBasicAuthHandler(password_mgr)
proxy_support = urllib2.ProxyHandler({})

# create "opener" (OpenerDirector instance)
opener = urllib2.build_opener(proxy_support, handler)
urllib2.install_opener(opener)

txheaders =  {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}

req = Request(protocol+url, data, txheaders)
handle = urlopen(req)

هذا هو حقل رؤوس URLERROR الناتج:

>HTTPMessage: Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=B4BD05C9582F7B27495CBB675A339724; Path=/nexus-webapp-1.3.3
WWW-Authenticate: NxBASIC realm="Sonatype Nexus Repository Manager API"
Content-Type: text/html;charset=utf-8
Content-Length: 954
Date: Fri, 03 Jul 2009 17:38:42 GMT
Connection: close

تحديثيبدو أن Nexus تنفذ نسخة مخصصة من Restlet's AuthenticationHelper. بفضل أليكس ، عرفت ما الذي تبحث عنه.

هل كانت مفيدة؟

المحلول

هل يمكنك إظهار الرؤوس الكاملة لاستجابة 401 التي تحصل عليها؟ ربما لا يكون طلب مصادقة أساسي ، ربما يكون الوكيل يريد مصادقةه الخاصة - من الصعب تخمينه دون رؤية الرؤوس المذكورة!

يحرر: شكرًا على إظهار الرؤوس (قمت بإعادة تهيئةهم على أنها "رمز" آخر لم تكن قابلة للقراءة).

كما كنت أظن ، لا يريد "أساسيًا" ، فهو يريد بعض بروتوكول المصادقة "NXBASIC" (NXBASIC " - لم أسمع عنه أبدًا (لا أعرف أي شيء عن Nexus) و أتصور أنه لا يوجد معالج المصادقة الأساسي الذي تستخدمه (حتى لو قبلت NXBASIC المصادقة الأساسية العادية بطريقة أو بأخرى ، فإن المعالج ، مع العلم فقط أنه بروتوكول مختلف ، لن يقدم مثل هذه المصادقة).

لذا ، فأنت بحاجة أولاً إلى البحث بالضبط عن ماهية NXBASIC ، ولهذا أظن أن سؤالًا مع العلامات الصحيحة قد يساعد. ثم ، بناءً على ما تتعلمه ، يأتي القضية المثيرة للاهتمام المتمثلة في تحديد معالج له ...!-(

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top