1

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

我搜索了这些问题,发现了这个帖子:特定网页的客户端 SSL 证书

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

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


只是为了让事情清楚并提供更多信息:

我真正想要实现的是这样的:

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

如果我理解你是正确的 Jean-Paul,这似乎可以用你的策略来实施,对吧?如果我遗漏了什么或做错了,请纠正我。

4

1 回答 1

1

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

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

您可以在 60 seconds 系列的 web 中twisted.web.guardhttp auth 条目中阅读有关内容。

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

为此,您需要编写类似于-HTTPAuthSessionWrapper但检查客户端 SSL 证书而不是像执行HTTP 身份验证的内容HTTPAuthSessionWrapper。这将涉及实施:

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

这个功能在 Twisted 本身中会很受欢迎,所以我相信你可以从 Twisted 开发 IRC 频道(freenode 上的#twisted-dev)找到更多帮助,我希望你能将你写回的任何东西贡献给 Twisted!

于 2013-05-27T20:25:10.623 回答