我们希望利用客户端证书为应用程序的特权用户子集实现双向身份验证。这个想法是,如果检测到证书,将要求用户输入额外的密码/PIN,并使用该密码/PIN 来验证证书和用户。普通用户将继续通过标准登录机制进行身份验证。
我们的生产环境(由一家知名公司托管)由负载平衡的应用程序服务器组成,我不清楚此设置将如何处理证书,也不确定是否存在我应该注意的陷阱。我非常希望得到有关此主题的一些想法、评论或实际建议。
答案1
如果您使用 SSL 终止负载均衡器,则客户端证书身份验证需要特别考虑,因为负载均衡器无法使用客户端的证书向后端 Web 服务器进行身份验证。
Java 的 AJP 可以很好地处理这个问题,因为有关客户端证书的信息会被传递,但大多数 HTTP 负载平衡器/传输部署都没有此功能。根据负载平衡器软件是什么(以及您是否控制环境的这一方面),您可能能够制定一种机制来将有关客户端证书的信息反馈给 Web 服务器。