考虑以下架构,它有两个Web服务器(用于平衡)和大约10个用于servlet处理的Java应用服务器。
您认为哪里是进行身份验证的正确位置。在ApacheWebserver或其中一个应用服务器的自定义代码中?
如果我在Webserver上进行身份验证,我们应该如何处理像OPenId这样的自定义内容?
编辑:选择性能,可扩展性和安全性还有什么含义?
答案 0 :(得分:2)
与建筑问题一样,答案取决于很多事情。
网络服务器是否做了需要保护的事情(比如提供静态内容。然后你必须在网络服务器上(或之前)进行身份验证
Web服务器或应用服务器是否接近最大容量?尝试在侧面进行身份验证
Web服务器可以处理所有身份验证要求吗?或者是需要在Web服务器上不可用的逻辑/信息(例如SO的声誉影响,用户可能做什么)。支持OpenId的要求可能是一个限制因素。
最后请注意,没有那么明显的攻击可能会受到您进行身份验证的位置的影响。例如如果Web服务器处理404(未找到)但应用服务器处理认证(401),则攻击者可以查明资源是否可用,即使他没有获得访问权限。如果需要访问应用服务器,则回复将花费更长时间,如果在这两种情况下都返回相同的响应,则此信息甚至可能泄露给攻击者。