我想知道扭曲的网络服务器是否可以使用基于客户端证书的身份验证来限制对某些资源的访问,并允许在没有证书的情况下访问其他资源。
我通过问题搜索并发现了这个帖子:Client side SSL certificate for a specific web page
现在我的问题是,如果有人知道twisted是否实现了ssl重新协商以及示例如何。
或者从那以后有不同的方法吗?
只是为了清楚说明并提供更多信息:
我真正希望实现的是:
如果我理解你正确的让 - 保罗,这似乎可以实施你的策略,对吧? 如果我错过了什么或做错了,请纠正我。
答案 0 :(得分:1)
在我看来,SSL重新协商在这里特别适用。您实际想要做的是授权基于所提供的客户端证书的请求。可能需要SSL重新协商的唯一原因是您希望客户端能够通过单个持久HTTPS连接请求多个资源,为每个连接提供不同的客户端证书。这让我觉得不太可能是必要的(至少,想要这样做的原因 - 而不仅仅是让客户建立一个新的HTTPS连接,或者只是根据单个客户端证书授权所有资源 - 都是模糊的)。
Twisted Web中的授权很简单。许多人更喜欢类似功能的方法,其中服务器基于客户端呈现的凭证选择资源对象。此资源对象可以完全控制其内容及其子项,因此,通过选择适合所显示凭据的资源,您可以完全控制哪些内容可供客户使用。
您可以在http auth entry的web in 60 seconds series中了解twisted.web.guard
。
这将使您熟悉Twisted Web中的身份验证和授权的细节。但是,它不会告诉您如何根据SSL客户端证书进行身份验证或授权。
为此,您需要将一些类似写入HTTPAuthSessionWrapper
- 但会检查客户端SSL证书而不是HTTP authentication HTTPAuthSessionWrapper
确实。这将涉及实施:
IResource
检查收到请求的传输以提取客户端证书这个功能在Twisted中非常受欢迎,所以我相信你可以从Twisted开发的IRC频道(freenode上的twisted-dev)找到更多的帮助,我希望你能为你所写的任何内容做出贡献。扭曲!