[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