2011-08-10 44 views
1

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

有努力,使为门户网站看守者。通过启用站点管理器,Portal不再提供登录用户的用户名和密码。理想的方式是后端应用程序还启用站点管理器,以便Portlet可以传递登录标记或cookie值。

寻找临时的办法,直到后端应用程序是启用的SiteMinder。我们可以启用/强制用户输入用户名和密码吗?我想不出这种可能性,因为Portlet代码(使用HTTP客户端访问应用程序的后端URL,而不是浏览器)。我能想到的一种可能的方式是,开发一个新屏幕(UI),让用户在Portlet中输入用户名和密码,并使用该屏幕通过Java代码对后端系统进行身份验证。请让我知道是否有其他想法。

而且,让我知道如果这个问题是混乱的,我会提供更多的细节。

由于

回答

2

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

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

1

我不会建议使用SM_USER头用于跟踪用户。 SM_USER包含提供给凭证收集器的标识,并且将根据所使用的认证方案的类型进行更改。

例如: 如果你有收集电子邮件地址而不是用户ID基于HTML窗体身份验证方案,电子邮件地址会在SM_USER头发送。对于X.509认证方案,证书中的SubjectDN将位于SM_USER头中。

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