【发布时间】:2017-08-15 14:49:42
【问题描述】:
过去有几次,我不得不在 WebSphere Application Server 上运行的应用程序中建立经过身份验证的 HTTP 或 HTTPS 连接。
我通常创建了一些自定义方式来存储连接的用户名和密码 - 使用文本或 XML 文件,或者为了测试,只是硬编码 - 并将这些详细信息添加到 HttpURLConnection 中的 Authorization 标头中,以执行 HTTP Basic身份验证。
我最近认为 WAS 集成解决方案控制台有一种配置用户名和密码的方法(在安全性 -> Java 身份验证和授权服务 -> J2C 身份验证数据下),使用内置功能很有意义(如果可能的话)而不是总是以自定义方式执行此操作,但经过一个小时左右的搜索后,我无法弄清楚如何执行此操作。
那么,有谁知道使用配置的 WAS J2C 身份验证数据对任意 HTTP 或 HTTPS 连接进行身份验证是否可行,如果可行,该怎么做?
我认为它需要 WebSphere API 来:
- 通过别名检索表示 J2C 身份验证条目的对象;和
- 执行以下操作之一:
- 从 JAAS/J2C 对象中获取经过身份验证的 HttpURLConnection 或 HttpsURLConnection 对象;
- 获取纯文本用户名和密码,以便将它们添加到授权标头;或
- 如果连接到同一域中的 IBM 平台:从 JAAS/J2C 对象获取 LTPA 令牌,然后可以将其添加到连接中的 cookie。
另外:如果 Apache HttpClient 能让这变得更容易,我可以使用它,但仍然需要适当的 WebSphere API。
我找到了一个可能对 WebSphere Portal 有用的类 (com.ibm.wps.portletservice.credentialvault.credentials.LtpaTokenCredential),但我需要在非 Portal 环境中执行此操作,因此我不能使用任何特定于 Portal 的类或接口。
我还需要它至少在以下类型的应用程序中工作:Servlet 和 WebSphere 信任关联拦截器。
【问题讨论】:
标签: java authentication servlets websphere jaas