我的项目一直在尝试使用scrypt来实现凭证检查器。我们尝试过实施我们自己的凭证和检查器对象,但是我们在使用pb时遇到了很多麻烦。应该如何支持twisted.pb中的备用凭证类型?
铅似乎硬编码为使用过线,这绝对不会在我们的实施工作MD5哈希值;我们没有办法在服务器端以纯文本的形式获取正确的密码,因为我们使用的是scrypt,所以我们需要一种方式来传输密码,以明文形式进行验证。我们已经尝试过使用twisted.cred.credentials.UsernamePassword和我们的凭证检查器,但它似乎没有将其传送到服务器。 (我们仍然使用_PortalAuthChallenger)
在http://twistedmatrix.com/trac/ticket/4398的票证似乎表明需要一个PBServerFactory子类来支持pb中的自定义凭证检查器,但到目前为止,我已经完全无法弄清楚按顺序覆盖什么以使其使用不同的ICredentials实施。是否有任何示例(甚至只是文档)如何让pb使用不同的凭证类?
看看_PortalRoot和例子,它看起来像IPBRoot实现不应该实际上被传递给PBServerFactory,而应该被注册为传递给PBServerFactory的适配器......这是正确的吗? 此外,它看起来像[PBClientFactory的_cbResponse](http://twistedmatrix.com/trac/browser/trunk/twisted/spread/pb.py#L1107)被编码以期望挑战/挑战者元组,并且[默认挑战者](http://twistedmatrix.com/trac/browser/trunk/twisted/spread/pb.py#L1331)在pb中使用MD5;不需要改变? – codermonkeyfuel 2011-03-28 00:36:39
1:如果'x'提供'IFoo',IFoo(x)'将总是返回'x'。因此,如果您通过直接提供商,则无需注册适配器。 2:如果你在身份验证方面做了一些不同的服务器端,那么你必须做一些不同的客户端;你需要实现你自己的东西,就像PBClientFactory。 – Glyph 2011-03-28 01:12:55