2015-12-01 2 views
0

J'utilise Pyro 4.34, Python 2.7 et Jython 2.7.Pyro - Comment utiliser la clé HMac avec le serveur de noms? CommunicationError: la configuration de la clé hmac n'est pas symétrique

NameServer. Je peux commencer le serveur de noms comme cette fin:

pyro4-ns --key abc 

Pyro serveur. La documentation indique que je peux définir l'attribut _pyroHmacKey sur le démon Pyro, mais la méthode locateNS a échoué avec un NamingError cannot find Name Server.

En regardant l'API pour locateNS, je vois qu'il a un argument appelé hmac_key. Si je me débarrasse de la _pryoHmacKey et que j'utilise cet argument à la place, le serveur Pyro peut démarrer correctement.

name_server = Pyro4.locateNS(hmac_key='abc') 

client. La documentation indique que je peux définir l'attribut _pyroHmacKey sur le proxy:

proxy = Pyro4.Proxy("PYRONAME:test") 
proxy._pyroHmacKey = 'abc' 

Cependant, le premier appel à une méthode sur proxy échoue avec:

CommunicationError: cannot connect: hmac key config not symmetric 

Répondre

0

Dans le code du serveur Pyro, j'ai enlevé la _pyroHmacKey attribtue du démon Pyro parce que j'ai supposé qu'il fallait seulement spécifier dans le paramètre Pyro4.locateNS(). Une fois que je l'ai ajouté, tout a fonctionné.

Il semble que la clé hmac doive apparaître aux deux emplacements pour que tout fonctionne.

name_server = Pyro4.locateNS(hmac_key='abc') 
daemon = Pyro4.daemon() 
daemon._pyroHmacKey = 'abc' 
uri = daemon.register(Foo()) 
ns.register('test, uri) 
daemon.requestLoop()