首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将登录可信度传递给JAX-WS服务客户端及其在Rational/WebSphere工具中的关联策略集和绑定。

如何将登录可信度传递给JAX-WS服务客户端及其在Rational/WebSphere工具中的关联策略集和绑定。
EN

Stack Overflow用户
提问于 2010-09-23 19:59:51
回答 1查看 6K关注 0票数 2

我专门使用的是WebSphere Integration V7,但我也可以使用V7.5.1(两者兼而有之)。

上下文:JAX客户端正在尝试创建一个JAX客户端,以调用通过JAX公开的人工任务管理器和WebSphere Process V7中的业务流程管理器服务。默认情况下,它们有附加的策略集,以及指定某些WS安全设置的提供程序绑定(因为这些设置在WSDL中没有定义)。

我已经想出了如何使用动态Web项目使其工作。我已经能够从WSDL生成JAX客户端代码。我已经能够从Process导出策略集以及提供者和客户端绑定,并将它们导入到我的工作区中。我已经能够将策略集和客户端绑定附加到客户端服务。我已经能够设置一个页面和一个servlet来调用我的web服务(测试客户机)。我已经能够在部署描述符和websphere绑定/扩展文件中设置安全设置以使其正常工作。

这一切都很棒,但在现实中,我们不希望只为了将web服务客户端暴露给我们正在编写的其他应用程序而使用war。我们希望生成一个web服务客户端jar,并将其与其他应用程序一起打包。

考虑到这一点,我已经找到了如何在IDE中使用常规Java项目,并将web服务客户端生成到其中。我还能够将策略集和客户端绑定附加到客户端。

我的问题是现在是如何调用它的?我像以前一样用我的页面和servlet创建了一个动态web项目来测试我的客户端。我将客户端项目设置为web库依赖项,这样它就可以访问客户端代码。我甚至可以像以前一样设置部署描述符来强制登录和授权。现在唯一的问题是,现在我不知道如何将凭据传递给我的web服务,因为它在它自己的"jar“中。在我访问菜单来设置TokenGenerator和CallbackHandler之前。现在,我无法访问这些菜单,因为客户端不在动态web项目中。所以现在我有一个“断开”,当然,当试图在服务器上运行它时,它会失败。

一定有办法这样做的。我应该能够生成一个客户端jar,并将它传递给它所需要的。以前有人遇到过这个吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-07 17:27:07

好的。我花了很长时间研究这个问题,阅读红皮书和developerworks文章,用头敲击键盘,终于有所进展。并不是一路走到那里,而是几乎。(希望一些IBM的东西能更容易地与你所得到的东西一起工作find...but。公平地说,用我所读到的,它是有意义的,而且是相当强大的。

总之,这里是Rational和WebSphere工具的诀窍:--您必须首先创建一个空的Java。--这是创建可移植web服务客户端的关键之一。

到目前为止:

  1. 在IDE中创建一个空Java项目。我更喜欢在/Software或WebSphere集成开发人员中使用Java透视图。
  2. 将WSDL和模式导入IDE中的另一个空泛型项目,而不是新创建的Java项目。
  3. 右键单击主WSDL并选择生成web服务客户端。
  4. 这里的另一个键:确保在向导中将客户端项目更改为您在步骤1中创建的Java。默认情况下,向导将尝试以新的或现有的动态web项目为目标,这不是您想要的。
  5. 确保选择JAX作为您的实现。确保您希望客户机是“可移植的”,并确保您告诉向导在Java客户端中包含WSDL。
  6. 在您准备好一切之后(并且您的本地服务器正在运行),Rational/WebSphere工具现在应该将JAX服务客户机生成到Java项目中。

精彩的!太棒了!现在您有了一个Java (又名jar),您可以使用它使其可移植。但是,如何使IBM工具高兴并将安全策略附加到客户端呢?

首先,我了解到最好将安全策略附加到WebSphere应用服务器/企业服务总线/Process的管理控制台中。有太多的事情要用安全性来解释,即使IBM给了您API来实现它,也不能尝试手动编写所有代码。请相信我。更容易的是定义服务器上的安全性,然后将其分配给客户端。

Anyway....in命令允许客户端在管理控制台上可见,以便为JAX安全性附加策略集和客户端绑定,它必须在"web级别“(由于缺少更好的术语),才能将jar视为web客户端。这意味着将jar作为一个J2EE实用程序Jar附加到EAR项目是行不通的。EAR不是"web级别“,而是”应用程序级别“。为此,您需要将Java与J2EE模块依赖项屏幕中的EAR关联起来,而不是将其作为Utility。相反,选中"lib“框。这意味着它可以可见/挂载到动态web项目/war的lib目录中(您也必须这样做)。令人惊讶的是,管理控制台现在将您的客户端jar视为一个真正的JAX服务客户端!现在,您可以将策略集和客户端绑定关联到它,以满足您的安全需求!

一开始这看上去很奇怪,但还是有点道理。毕竟,您正在处理web服务,并且正在使用web协议,因此在某些方面,将客户端置于应用程序的"web级别“是有意义的。

编辑:,我搞砸了安全策略,我发现此开发人员工作文章对我帮助最大。特别注意清单2 ClientTest.java。可悲的是,您必须将所有的安全代码编码到您的客户端,才能使其工作得最干净。还有另一个问题。IBM将允许您从运行在WebSphere之外的客户端创建用户名令牌,但它们不允许您在WebSphere之外创建LTPA令牌。因此,要测试这些令牌,您必须在本地打包和部署客户机,以测试所有这些令牌。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3782090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档