过去几次,我必须在WebSphere Application Server上运行的应用程序中建立经过身份验证的HTTP或HTTPS连接。 我通常会为连接创建一些自定义方式来存储用户名和密码 - 使用文本或XML文件,或者进行测试,只需硬编码 - 并将这些详细信息添加到HttpURLConnection中的Authorization标头中,以执行HTTP基本身份验证。
我最近认为WAS集成解决方案控制台有一种配置用户名和密码的方法(在安全性 - > Java身份验证和授权服务 - > J2C身份验证数据下),并且使用内置功能(如果可能的话),而不是总是以自定义方式执行此操作,但我在一小时左右的搜索后无法弄清楚如何执行此操作。
那么,有没有人知道它是否可能,如果是这样,如何使用配置的WAS J2C身份验证数据来验证任意HTTP或HTTPS连接?
我认为它需要WebSphere API:
另外:如果Apache HttpClient会使这更容易,我可以使用它,但仍然需要适当的WebSphere API。
我找到了一个可能对WebSphere Portal(from collections import OrderedDict
unordered_dict = {
3: {'you', 'see', 'way', 'and', 'the'},
6: {'become', 'people'},
2: {'is'},
5: {'treat'},
4: {'what', 'them', 'they'}}
ordered_dict = OrderedDict()
for key in sorted(unordered_dict.keys()):
ordered_dict[key] = unordered_dict[key]
)有用的类,但我需要在非Portal环境中执行此操作,因此我无法使用任何特定于Portal的类或接口
我还需要它至少在以下类型的应用程序中工作:Servlet和WebSphere Trust Association Interceptor。
答案 0 :(得分:0)
如果身份验证是在WAS服务器之间进行的,那么您就不需要这些长度;只要参与的WAS服务器构成相同安全域的一部分并相互信任,LTPA令牌就足够了。
如果您的想法是从非WAS服务器转到WAS服务器,您可以查看TAI选项,但您仍然不需要使用身份验证别名。
当我们从一个服务到下游服务进行身份验证时,我们只是传入了LTPA令牌,如下所示(LTPA令牌不是Portal的东西,它是一个无用的东西)。假设有人已在您的服务上进行了身份验证,例如从Portal或WAS登录,我们想在另一个WAS服务器上调用下游REST服务。
/** For call to a REST client, use apache wink that comes with WAS:
* This method shows how to pass in the available LTPA token to create
* a RestClient
private org.apache.wink.client.RestClient getRestClient() {
if (restClient == null) {
org.apache.wink.client.ClientConfig config = new ClientConfig();
config.handlers(new org.apache.wink.client.handlers.LtpaAuthSecurityHandler());
restClient = new RestClient(config);
}
return restClient;
}