SiteMinder和HTTP客户端 - 用户登录信息

时间:2011-08-10 16:11:46

标签: httpclient siteminder

我们有一个运行在Java / J2EE技术​​上的Portlet。它通过需要用户身份验证的HTTP请求与另一个应用程序/系统交互。当前解决方案从Portal检索登录用户的用户名和密码,并使用“HTTPClient”API将此信息传递给后端系统,以根据用户的身份验证和授权检索内容。

努力为Portal启用站点管理员。启用站点管理器后,Portal不再提供登录用户的用户名和密码。理想的方法是后端应用程序还启用了站点管理器,以便Portlet可以传递登录令牌或cookie值。

在后端应用程序启用SiteMinder之前寻找临时方法。有没有办法可以启用/强制用户输入用户名和密码?我无法想到这种可能性,因为Portlet代码(使用HTTP Client访问应用程序的后端URL,而不是浏览器)。我可以想到的一种可能的方法是,开发一个新的屏幕(UI),让用户在Portlet中输入用户名和密码,并使用它通过Java代码对后端系统进行身份验证。如果有任何其他想法,请告诉我。

另外,如果问题令人困惑,请告诉我,我会提供更多详情。

由于

2 个答案:

答案 0 :(得分:2)

Siteminder可以动态地向HTTP标头中的连接应用程序提供用户信息(uid,电子邮件地址等)。在Siteminder策略服务器上配置此行为。默认情况下,HTTP标头SM_USER(或类似标头)包含经过身份验证的用户的用户名。

然后,您必须调整portlet代码以从请求中获取这些标头,并像以前一样将其提供给后端应用程序。

答案 1 :(得分:1)

我不建议使用SM_USER标头来跟踪用户。 SM_USER包含提供给凭证收集器的ID,并将根据使用的身份验证方案的类型进行更改。

实施例: 如果您有基于HTML表单的身份验证方案收集电子邮件地址而不是UserID,则电子邮件地址将在SM_USER标头中发送。对于X.509身份验证方案,证书中的SubjectDN将位于SM_USER标头中。

更好的选择是使用SM_UNIVERSALID标头,因为它始终包含通用ID属性。通用ID属性在用户目录对象中配置(通常设置为" uid")。