我正在尝试使用Twisted的Perspective Broker创建服务器/客户端。我想使用TLS进行客户端身份验证,以识别谁是连接的人。

我找到以下链接:
http://twistedmatrix.com/documents/current/core/howto/ssl.html

Use TLS and Python for authentication

但是,两者都在解决协议。我看不到如何通过Perspective Broker获得客户端身份。最后,我看到了:

Use alternate authentication in twisted's Perspective Broker

但是,提到要调用根对象。那是否意味着我那时无法使用Avatar / IPerspective?即使我走了使用pb.Referencable的路线,而服务器是管理用户对象的服务器,remote_foo()函数如何从证书中获取客户端身份?

更新:我解决了切换到Twisted AMP的问题,然后由于可以访问传输,因此以这种方式解决了我的问题。但是我想知道在透视经纪人中这是否可行,怎么办?

最佳答案

IPBRoot.rootObject(...)被传递BrokerBroker是协议。

在调用rootObject的特定时间,传输尚未初始化。但是,如果要在该对象上实现远程方法(例如remote_authenticateUsingTLS),则在协议响应该方法时,它将具有传输并且该传输将具有证书。因此,在您的IPBRootrootObject方法中,构造一个对象,该对象记住已传递的broker,然后在remote_authenticateUsingTLS中,您可以使用Certificate.peerFromTransport(self.broker.transport)使用其代理从对等方获取证书。 。

希望这可以帮助!

关于python - 使用Twisted Perspective Broker和TLS进行客户端身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33276572/

10-11 09:03