2

我们有一个托管在 tomcat 服务器上的自定义 Web 应用程序,并希望在 tomcat 上登录此应用程序时获得一个 LTPA2Token。两个应用程序服务器上的所有应用程序都使用相同的 LDAP。tomcat 服务器上的应用程序不能托管在 WebSphere 应用程序服务器 (WAS) 上。

思路如下:

1.通过网络浏览器在tomcat网络应用程序上输入用户名和密码。2 使用凭证生成自定义令牌 3. 将这些凭证发送到 WebSphere Application Server 上的自定义 TAI

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

谢谢和最好的问候本杰明

4

2 回答 2

1

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

最简单的方法是使用一个将重定向发送到您的 tomcat 应用程序的 jsp 创建虚拟 Web 应用程序。使用 JEE 安全性保护该应用程序并创建 TAI 以拦截对该应用程序的调用,并基于传递的带有用户 ID 的令牌创建 TAIResult,使用:

public static TAIResult create(int status, String principal);

这将在 WAS 注册表中找到一个主要用户,对其进行身份验证并创建 LTPA 令牌。然后将传递到您的页面,该页面又将重定向到 tomcat,在浏览器中设置 cookie。

也许可以只在 TAI 中执行此操作,但我从未尝试过该解决方案(并且使用自定义应用程序的解决方案将起作用)。

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

PS。
为什么您的 tomcat 应用程序无法部署在 WAS 上?也许解决这个问题比创建这个 TAI 解决方案更容易?

于 2014-08-14T19:39:00.483 回答
1

您当然不希望或不需要将凭证(例如密码)传递给 WebSphere;TAI 进程不需要实际的密码——框架的本质是允许通过替代方式建立信任关系。

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

WebSphere 7+ 附带了开箱即用的OAuth 和 SAML TAI(尽管需要进行配置才能设置它们这为您提供了两个可供选择的开放标准规范——它们都为您的 Tomcat 应用程序提供了广泛的Java 库支持。你最终写WebSphere 端的代码,作为额外的奖励,如果出现任何问题或似乎无法正常工作,您可以使用 IBM PMR 支持流程 - 而家庭 brew TAI 解决方案并非如此,因为它是纯粹的自定义代码。您的 Tomcat 解决方案的一半将来也可以与其他平台上的其他服务提供商应用程序一起使用。这些 SSO 协议被广泛采用和成熟——经过整个 Web 开发人员行业的审查,如果实施得当,几乎没有或根本没有攻击向量。这些方法也不需要 DNS 或域对齐 - 它们旨在跨域工作。

于 2014-08-20T00:57:15.590 回答