[Python] suds ed autenticazione https

Alessandro Dentella sandro a e-den.it
Mar 25 Ago 2015 12:44:34 CEST


Ciao a tutti,

ho un problema per il quale ho (quasi) esaurito la fantasia
investigativa...

Ho una pacchetto  che si connette al servizio delle poste per inviare
raccomandate soap usando suds.

Il pacchetta funziona correttamente su una vecchia Debian Lenny che
ora sto sostituendo con una Debian Jessie. Nel passaggio non riesco
più a fare funzionare l'autenticazione sul server soap che è in https.

Nel debug ho preso solo la porzione di codice che si connette al
servizio e che dovrebbe fare il download del wsdl, ho creato un minimo
virtualenv sulla macchina di produzione attuale (quella che funziona)
*usando esattamente la stessa cartella come sorgente di suds* e su una
serie di altre macchine (Deebian Lenny e Jessie). SOLO su quella di
produzione passo la basic authentication.

Se provo con wget passo l'autenticazione su qualunque macchina, questo
per eliminare il dubbio che esista un controllo sull'IP.

Ad ogni cambio macchina elimino i *pyc visto che le versioni di
Python sono differenti.


L'errore che ricevo è immancabilmente:

   <html><head>
   <title>401 Authorization Required</title>
   </head><body>
   <h1>Authorization Required</h1>
   <p>This server could not verify that you
   are authorized to access the document
   requested.  Either you supplied the wrong
   credentials (e.g., bad password), or your
   browser doesn't understand how to supply
   the credentials required.</p>
   </body></html>

Risposta che ottengo anche con wget, solo che il client capisce che
deve procedere ed offrire le credenziali e da me non succede (altro che
nella macchina di produzione).

Mi resta solo da vedere il codice esatto della comunicazione con il
server ma mi pare molto incomprensibile quello che ottengo. Il codice
con cui testo  è così:

  import sys
  sys.path.insert(0, 'suds_philpem-0.4.3-py2.5.egg')

  from suds import client

  username='...'
  password='xxx'
  URL='https://cewebservices.posteitaliane.it/ROLGC/RolService.svc?WSDL'
  client.Client(URL, username=username, password=password)

ed il virtualenv lo creo con "virtualenv --no-site-packages".
Come può lo stesso codice (rsync -a suds...) dare risultati differenti su
macchine formalmente identiche (Debian Lenny)?

Cosa può interferire?


sandro
*:-)


--
Sandro Dentella  *:-)
http://www.reteisi.org             Soluzioni libere per le scuole
http://sqlkit.argolinux.org        SQLkit home page - PyGTK/python/sqlalchemy


Maggiori informazioni sulla lista Python