我们有一个托管在tomcat服务器上的自定义Web应用程序,并希望在tomcat上登录此应用程序时获得LTPA2Token。两个应用程序服务器上的所有应用程序都使用相同的LDAP.tomcat服务器上的应用程序无法托管在Web Sphere Application Server(WAS)上。
这个想法如下:
1.通过Web浏览器在tomcat Web应用程序中输入用户名和密码。 2使用凭据生成自定义令牌 3.将这些凭据发送到Web Sphere Application Server上的自定义TAI
问题是,如果我们可以在成功登录后从TAI获取LTPA2Token并将其发送回tomcat应用程序,以便可以在浏览器中设置LTPA2Token吗?
谢谢和最诚挚的问候 本杰明
答案 0 :(得分:1)
这可能会有效,但两台服务器应该在同一个sso domain
上。 tomcat.company.com和websphere.company.com。在Security > Global security > Single sign-on (SSO)
中的WebSphere管理控制台中,在Domain name
中指定了.company.com
。您可以在那里定义多个域,但如果只有一个域,则更容易调试。
最简单的方法是使用一个jsp创建虚拟Web应用程序,该jsp将重定向发送到您的tomcat应用程序。使用JEE安全性保护该应用程序并创建拦截对此应用程序的调用的TAI,并使用以下用户ID基于传递的令牌创建TAIResult:
public static TAIResult create(int status, String principal);
这将在WAS注册表中找到主要用户,对其进行身份验证并创建LTPA令牌。然后将传递到您的页面,然后将重定向到tomcat,在浏览器中设置cookie。
也许有可能在TAI中做到这一点,但我从未尝试过这个解决方案(并且使用自定义应用程序的解决方案也能正常工作)。
但是,您必须创建良好的自定义令牌,否则其他人可能能够使用您的TAI作为其他人进行身份验证。
PS。
为什么你的tomcat应用程序无法部署在WAS上?也许解决这个问题比创建这个TAI解决方案更容易?
答案 1 :(得分:1)
您当然不希望或需要将凭据(例如密码)传递给WebSphere; TAI流程不需要实际的密码 - 框架的本质是通过替代方式允许信任关系。
此外 - 还没有迫切需要推出自己的TAI类和相关的专有SSO协议(令牌,加密等)。
WebSphere 7+开箱即用OAuth和SAML TAI(尽管需要配置才能设置它们)。这为您提供了两个开放的标准规范供您选择 - 两者都对您的Tomcat应用程序有广泛的Java library支持。您最终在WebSphere端编写 no 代码,作为额外的奖励,如果出现任何问题或者看起来不起作用,您可以使用IBM PMR支持流程 - 而不是家庭的情况brew TAI解决方案,因为它是纯粹的自定义代码。您的Tomcat一半解决方案将来也可以与其他平台上的其他服务提供商应用程序一起使用。这些SSO协议被广泛采用并成熟 - 由整个Web开发人员行业审核,如果正确实施,很少或没有攻击媒介。这些方法也不需要DNS或域对齐 - 它们旨在跨域工作。