我正在尝试使用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(...)
被传递Broker
。 Broker
是协议。
在调用rootObject
的特定时间,传输尚未初始化。但是,如果要在该对象上实现远程方法(例如remote_authenticateUsingTLS
),则在协议响应该方法时,它将具有传输并且该传输将具有证书。因此,在您的IPBRoot
的rootObject
方法中,构造一个对象,该对象记住已传递的broker
,然后在remote_authenticateUsingTLS
中,您可以使用Certificate.peerFromTransport(self.broker.transport)
使用其代理从对等方获取证书。 。
希望这可以帮助!
关于python - 使用Twisted Perspective Broker和TLS进行客户端身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33276572/