Jakarta ee 使用信任关联侦听器(TAI)获取LTPA2令牌

Jakarta ee 使用信任关联侦听器(TAI)获取LTPA2令牌,jakarta-ee,websphere,single-sign-on,websphere-8,ltpa,Jakarta Ee,Websphere,Single Sign On,Websphere 8,Ltpa,我们有一个托管在tomcat服务器上的定制web应用程序,希望在tomcat上登录该应用程序时实现LTPA2Token。两个应用服务器上的所有应用程序都使用相同的LDAP。tomcat服务器上的应用程序不能托管在Web Sphere应用服务器(WAS)上 其思路如下: 1.通过web浏览器在tomcat web应用程序上键入用户名和密码。 2使用凭据生成自定义令牌 3.将这些凭据发送到Web Sphere应用程序服务器上的自定义TAI 问题是,我们是否可以在成功登录后从TAI获得LTPA2Tok

我们有一个托管在tomcat服务器上的定制web应用程序,希望在tomcat上登录该应用程序时实现LTPA2Token。两个应用服务器上的所有应用程序都使用相同的LDAP。tomcat服务器上的应用程序不能托管在Web Sphere应用服务器(WAS)上

其思路如下:

1.通过web浏览器在tomcat web应用程序上键入用户名和密码。 2使用凭据生成自定义令牌 3.将这些凭据发送到Web Sphere应用程序服务器上的自定义TAI

问题是,我们是否可以在成功登录后从TAI获得LTPA2Token并将其发送回tomcat应用程序,以便在浏览器中设置LTPA2Token

谢谢并致以最良好的问候
Benjamin

这可能可行,但两台服务器应位于相同的
sso域上,例如tomcat.company.com和websphere.company.com。在WebSphere管理控制台中的
Security>Global Security>Single sign-on(SSO)
中指定
域名
,例如
.company.com
。您可以在那里定义多个域,但如果只有一个域,则调试会更容易

最简单的方法是使用一个jsp创建虚拟web应用程序,该jsp将重定向到您的tomcat应用程序。使用JEE security保护该应用程序,并创建将拦截对此应用程序的调用的TAI,并使用以下方法基于传递的具有用户id的令牌创建TAIRSULT:

public static TAIResult create(int status, String principal);
这将在WAS注册表中找到主要用户,对其进行身份验证并创建LTPA令牌。然后将传递到您的页面,该页面将重定向到tomcat,并在浏览器中设置cookie

也许在TAI中就可以做到这一点,但我从未尝试过这种解决方案(使用自定义应用程序的解决方案也可以)

但是,您必须创建良好的自定义令牌,否则其他人可能会使用您的TAI作为其他人进行身份验证

PS.

为什么不能在WAS上部署tomcat应用程序?也许解决这个问题比创建这个TAI解决方案更容易?

您当然不希望或不需要向WebSphere传递凭据(例如密码);TAI过程不需要实际的密码——框架的本质是允许通过其他方式建立信任关系

此外,也没有迫切需要推出您自己的TAI类和相关的专有SSO协议(令牌、加密等)


WebSphere7+附带了和TAI(尽管需要配置才能设置它们)。这为您提供了两个开放的标准规范可供选择,它们都对您的Tomcat应用程序有广泛的支持。最终,您不会在WebSphere端编写任何代码,如果出现任何问题或似乎不起作用,您可以使用IBM PMR支持流程,这是一个额外的好处,与自制TAI解决方案不同,因为它是纯自定义代码。您的Tomcat解决方案的一半将来还可以与其他平台上的其他服务提供商应用程序一起使用。这些SSO协议被整个web开发行业广泛采用并经过了成熟的审查,如果实施得当,几乎没有攻击向量。DNS或域对齐在这些方法中也不是必需的-它们被设计为跨域工作。

感谢您的回答。我们有几个原因可以解释为什么在WAS上部署此应用太费力。这两个要点涉及事务管理(WAS不提供标准的JTA javax.transaction.TransactionManager),而只提供专有API。此外,我们的应用程序有自己的异步线程管理,为了让它在WAS上工作,必须对其进行更改。如果您对细节感兴趣,可以阅读以下内容: