我怎么能相信SiteMinder HTTP标头没有被篡改?

时间:2012-04-13 21:40:09

标签: single-sign-on siteminder

我对SiteMinder和SSO一般都是新手。我整个下午都在SO和CA的网站上搜索了一个基本的例子,找不到一个。我不关心设置或编程SM或类似的东西。所有这一切都已由其他人完成。我只想调整我的JS Web应用程序以使用SM进行身份验证。

我知道SM会添加一个带有SM_USER等密钥的HTTP标头,告诉我用户是谁。我没有得到的是 - 是什么阻止任何人自己添加这个标题并完全绕过SM?我需要在服务器端代码中放置什么来验证SM_USER是否真的来自SM?我想安全的cookie都涉及......

5 个答案:

答案 0 :(得分:17)

Web服务器上安装的 SM Web代理旨在拦截所有流量并检查资源请求是否为......

  1. 受SiteMinder保护

  2. 如果用户拥有有效的SMSESSION(即经过身份验证

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

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

答案 1 :(得分:3)

因为所有流量都应通过Siteminder Web Agent,所以即使用户设置此标头,它也会被覆盖/删除

答案 2 :(得分:2)

SiteMinder r12.52包含一项名为Enhanced Session Assurance with DeviceDNA™的新功能。 DeviceDNA可用于确保SiteMinder会话Cookie未被篡改。如果会话在另一台计算机上重播,或者在同一台计算机上的另一个浏览器实例上重播,则DeviceDNA将捕获此信息并阻止该请求。

Click here to view a webcast discussing new features in CA SiteMinder r12.52

答案 3 :(得分:2)

所有Siteminder架构确实假设应用程序只需要信任“SM_”标头。

实际上,根据应用程序的体系结构,这可能还不够。 基本上,你有3个案例:

  • Web代理安装在运行应用程序的Web服务器上(Apache / PHP应用程序的典型情况):如上所述,您可以信任标头,因为没有请求可以访问您的应用程序而不会被Web代理过滤。
  • Web代理安装在与运行应用程序不同的Web服务器上,但安装在同一台计算机上(典型情况:安装在为Java JEE Application Server提供服务的Apache前端上的SM代理):您必须确保没有请求可以直接到达您的应用服务器。您可以将应用程序服务器绑定到环回接口,也可以过滤服务器上的端口。
  • Web代理在应用程序前面的反向代理上运行。同样的评论。这里唯一的解决方案是在您的应用程序上实现IP过滤器,以仅允许来自反向代理的请求。

答案 4 :(得分:1)

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

假设未启用IP过滤,并且允许Web请求直接到AppServer,绕过Web服务器和sso-agent。

如果应用程序必须实现一个解决方案来声明请求标头/ cookie没有被篡改/注入,我们是否有任何解决方案与以下相似?

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