基于客户端证书的使用扭曲的web服务器访问特定资源

时间:2013-05-27 13:54:11

标签: ssl webserver certificate twisted authentication

我想知道扭曲的网络服务器是否可以使用基于客户端证书的身份验证来限制对某些资源的访问,并允许在没有证书的情况下访问其他资源。

我通过问题搜索并发现了这个帖子:Client side SSL certificate for a specific web page

现在我的问题是,如果有人知道twisted是否实现了ssl重新协商以及示例如何。

或者从那以后有不同的方法吗?


只是为了清楚说明并提供更多信息:

我真正希望实现的是:

  • 新用户访问某个网站但尚未授予对该资源的访问权限,因为他还没有允许他查看该网站的令牌。
  • 因此,他被重定向到要求客户端证书的登录资源。如果一切正确,则从证书中检索的其他数据将存储在会话中,该会话构成令牌。
  • 然后,他被重定向回入口网站,验证令牌,并根据他的授权级别显示特定内容

如果我理解你正确的让 - 保罗,这似乎可以实施你的策略,对吧? 如果我错过了什么或做错了,请纠正我。

1 个答案:

答案 0 :(得分:1)

在我看来,SSL重新协商在这里特别适用。您实际想要做的是授权基于所提供的客户端证书的请求。可能需要SSL重新协商的唯一原因是您希望客户端能够通过单个持久HTTPS连接请求多个资源,为每个连接提供不同的客户端证书。这让我觉得不太可能是必要的(至少,想要这样做的原因 - 而不仅仅是让客户建立一个新的HTTPS连接,或者只是根据单个客户端证书授权所有资源 - 都是模糊的)。

Twisted Web中的授权很简单。许多人更喜欢类似功能的方法,其中服务器基于客户端呈现的凭证选择资源对象。此资源对象可以完全控制其内容及其子项,因此,通过选择适合所显示凭据的资源,您可以完全控制哪些内容可供客户使用。

您可以在http auth entryweb in 60 seconds series中了解twisted.web.guard

这将使您熟悉Twisted Web中的身份验证和授权的细节。但是,它不会告诉您如何根据SSL客户端证书进行身份验证或授权。

为此,您需要将一些类似写入HTTPAuthSessionWrapper - 但会检查客户端SSL证书而不是HTTP authentication HTTPAuthSessionWrapper确实。这将涉及实施:

  • IResource检查收到请求的传输以提取客户端证书
  • 实施代表X509证书的凭据类型
  • 实施凭据检查程序,可以根据其X509证书对用户进行身份验证
  • 并且可能实现一个可以授权用户的领域(尽管您可能已经写过这个,因为它与身份验证步骤正交,因此即使您不想进行身份验证也可以重复使用使用SSL证书)

这个功能在Twisted中非常受欢迎,所以我相信你可以从Twisted开发的IRC频道(freenode上的twisted-dev)找到更多的帮助,我希望你能为你所写的任何内容做出贡献。扭曲!