18

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

我知道 SM 将添加一个带有诸如 SM_USER 之类的键的 HTTP 标头,它会告诉我用户是谁。我没有得到的是 - 是什么阻止任何人自己添加此标头并完全绕过 SM?我必须在我的服务器端代码中输入什么来验证 SM_USER 是否真的来自 SM?我想涉及到安全cookie...

4

5 回答 5

18

安装在 Web Server 上的SM Web Agent旨在拦截所有流量并检查资源请求是否...

  1. 受 SiteMinder 保护

  2. 如果用户有一个有效的 SMSESSION(即是Authenticated

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

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

于 2012-04-19T21:04:50.933 回答
4

因为所有流量都应该通过 Siteminder Web 代理,所以即使用户设置了这个标头,它也会被覆盖/删除

于 2012-04-19T18:40:05.743 回答
3

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

实际上,这可能还不够,具体取决于应用程序的架构。基本上,您有 3 种情况:

  • Web 代理安装在您的应用程序运行的 Web 服务器上(Apache/PHP 应用程序的典型情况):如上所述,您可以信任标头,因为没有经过 Web 代理过滤的请求可以到达您的应用程序。
  • Web 代理安装在与您的应用程序运行的不同的 Web 服务器上,但在同一台机器上(典型情况:SM 代理安装在为 JEE 应用服务器服务的 Apache 前端):您必须确保没有请求可以直接访问您的应用程序服务器。要么将应用程序服务器绑定到环回接口,要么过滤服务器上的端口。
  • Web 代理在应用程序前面的反向代理上运行。同样的评论。这里唯一的解决方案是在您的应用程序上实施 IP 过滤器,以仅允许来自您的反向代理的请求。
于 2014-03-06T11:37:35.467 回答
2

SiteMinder r12.52 包含一个名为“Enhanced Session Assurance with DeviceDNA™”的新功能。DeviceDNA 可用于确保 SiteMinder 会话 Cookie 未被篡改。如果 Session 在另一台机器上重放,或者从同一台机器上的另一个浏览器实例重放,DeviceDNA 将捕捉到这一点并阻止请求。

单击此处查看讨论 CA SiteMinder r12.52 中的新功能的网络广播

于 2013-12-13T18:31:56.697 回答
1

典型的企业架构将是 Webserver (Siteminder Agent) + AppServer (Applications)

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

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

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