Single sign on 我如何才能相信SiteMinder HTTP头文件';你没有被篡改吗?

Single sign on 我如何才能相信SiteMinder HTTP头文件';你没有被篡改吗?,single-sign-on,siteminder,Single Sign On,Siteminder,一般来说,我对SiteMinder和SSO完全陌生。整个下午我都在SO和CA的网站上搜寻一个基本的例子,但都找不到。我不在乎设置或编程SM或类似的东西。所有这些都已经由其他人完成了。我只想调整我的JS web应用程序,以使用SM进行身份验证 我知道SM将添加一个HTTP头,其中包含一个密钥,比如SM_USER,它将告诉我用户是谁。我不明白的是——是什么阻止任何人自己添加这个头并完全绕过SM?我必须在服务器端代码中输入什么来验证SM_用户是否真的来自SM?我假设涉及安全cookie…因为所有流量都

一般来说,我对SiteMinder和SSO完全陌生。整个下午我都在SO和CA的网站上搜寻一个基本的例子,但都找不到。我不在乎设置或编程SM或类似的东西。所有这些都已经由其他人完成了。我只想调整我的JS web应用程序,以使用SM进行身份验证


我知道SM将添加一个HTTP头,其中包含一个密钥,比如SM_USER,它将告诉我用户是谁。我不明白的是——是什么阻止任何人自己添加这个头并完全绕过SM?我必须在服务器端代码中输入什么来验证SM_用户是否真的来自SM?我假设涉及安全cookie…

因为所有流量都应该通过Siteminder Web代理,所以即使用户设置了此标头,它也将被覆盖/删除安装在Web服务器上的SM Web代理设计用于拦截所有流量并检查资源请求是否

  • 受SiteMinder保护

  • 如果用户拥有有效的SMSESSION(即已通过身份验证)

  • 如果1和2为真,则WA将检查Siteminder策略服务器,以查看用户是否有权访问请求的资源


  • 为了确保没有用户信息的HTTP头注入,SiteMinder WebAgent将重写所有特定于SiteMinder的HTTP头信息。本质上,这意味着您可以“信任”WebAgent提供的有关用户的
    SM
    信息,因为它是由服务器上的Web Agent创建的,而不是传入请求的一部分

    SiteMinder r12.52包含一项新功能,名为DeviceDNA增强会话保证™. DeviceDNA可用于确保SiteMinder会话Cookie未被篡改。如果会话在另一台机器上重播,或者从同一台机器上的另一个brower实例重播,DeviceDNA将捕获该会话并阻止请求


    所有Siteminder体系结构确实都假设应用程序只需信任“SM_”头

    实际上,这可能还不够,具体取决于应用程序的体系结构。 基本上,您有3个案例:

    • Web代理安装在应用程序运行的Web服务器上(Apache/PHP应用程序的典型情况):如上所述,您可以信任头,因为没有Web代理过滤,任何请求都无法到达应用程序
    • Web代理安装在与应用程序运行所在的Web服务器不同的Web服务器上,但安装在同一台机器上(典型情况:SM代理安装在为JEE应用程序服务器提供服务的Apache前端上):您必须确保没有任何请求可以直接到达应用程序服务器。要么将应用程序服务器绑定到环回接口,要么过滤服务器上的端口
    • Web代理在应用程序前面的反向代理上运行。同样的话。这里唯一的解决方案是在应用程序上实现一个IP筛选器,以便只允许来自反向代理的请求

      • 典型的企业架构将是Webserver(Siteminder代理)+AppServer(应用程序)

        假设未启用IP筛选,允许直接向AppServer发送Web请求,绕过Web服务器和sso代理

        如果应用程序必须实现一个解决方案来断言请求头/cookie未被篡改/注入,我们是否有类似于以下的解决方案

        • 发送在单独cookie中加密或加密(Sym/Asym)的SM_用户id以及SMSESSION id
        • 应用程序将使用密钥对SMSESSION或SM_用户id进行解密,以检索用户id、会话到期状态以及任何其他附加详细信息和授权详细信息(如果适用)
        • 应用程序现在信任用户id并进行身份验证

        我想知道这一点。我注意到在一个实现中,SM_会话(会话cookie)每分钟都在更新。我想知道安全cookie的默认超时是多少。您可以在Web和应用服务器之间实现TLS/SSL客户端身份验证,以确保数据未被篡改,但这会增加环境的复杂性,特别是当您的应用服务器无法在内部处理SSL客户端身份验证时。