集成Shibboleth Identity Provider以使用外部身份验证系统时。流程如下:
在上述情况下,恶意用户有机会通过在步骤3中创建修改后的POST请求来模拟其他用户,并且Idp会对他进行身份验证,除非执行某些验证。
我能想到的唯一两种验证方式是:
在Idp和身份验证系统之间使用一些分布式共享会话。这样Idp就可以从会话中验证用户是否经过身份验证。
对POST请求参数使用一些签名机制(比如使用Authentication System的私钥来签署userId的哈希值),Idp可以验证POST请求是否真正从身份验证系统重定向而不是由用户伪造。
这些是解决此类安全漏洞的常用方法吗?
这两种方法是否足以绕过所有潜在的漏洞?