我如何将登录信贷传递给JAX-WS服务客户端,其相关的策略集和绑定在Rational/WebSphere工具中

StackOverflow https://stackoverflow.com/questions/3782090

我专门使用WebSphere Integration Developer V7,但我也可以使用Ronical Software Architect v 7.5.1(我两者都有)。

语境: 我正在尝试创建一个JAX-WS客户端,以在WebSphere Process Server V7中致电人类任务管理器和业务流管理器服务,该服务器通过JAX-WS暴露。默认情况下,它们已连接策略集,并指定了一些WS安全设置的提供商绑定(因为WSDL中未定义这些设置)。

我已经弄清楚了如何使用动态的Web项目使其正常工作。我已经能够从WSDL生成JAX-WS客户端代码。我已经能够从Process Server导出策略集,提供商和客户端绑定,并将其导入我的工作空间。我已经能够将策略集和客户端绑定附加到客户端服务。我已经能够设置一个页面和一个servlet来调用我的Web服务(测试客户端)。而且我已经能够在部署描述符和WebSphere绑定/扩展文件中设置安全设置以使其正常工作。

这一切都很棒,但实际上,我们不希望发动战争只是为了将Web服务客户端展示到我们正在编写的其他应用程序中。我们想生成一个Web服务客户端JAR,并将其与其他应用程序打包。

鉴于这种思路,我已经能够弄清楚如何在IDE中使用常规Java项目并将Web服务客户端生成其中。我还能够将策略集和客户端绑定附加到客户端。

我的问题 现在如何调用这个?我已经与以前的页面创建了一个动态的Web项目,以测试我的客户端。我将客户端项目设置为Web库依赖关系,以便它可以访问客户端代码。我什至可以像以前一样设置部署描述符,以强制登录和验证。现在唯一的问题是,我无法弄清楚如何将凭据传递给我的Web服务,因为它是在自己的“ jar”中。在我可以访问菜单之前设置Tokengenerator和CallbackHandler。现在,我无法访问这些菜单,因为客户不在动态网络项目中。因此,现在我有了一个“断开连接”,当尝试在服务器上运行它时,它当然会失败。

必须有一种方法来做到这一点。我应该能够生成客户端罐并传递所需的内容。有人遇到这个吗?

有帮助吗?

解决方案

行。我花了很长时间研究此书,阅读红皮书和开发工作者文章,然后将我的头撞到键盘上,终于到了某个地方。不是一直到那里,而是几乎。 (希望一些IBM的东西更容易找到...但是您可以处理所提供的东西。而且,公平地说,我读过的东西很有意义,而且非常强大。)

无论如何,这是理性和WebSphere工具的诀窍: 您必须先创建一个空的Java项目。 这是制作便携式Web服务客户端的关键之一。

因此,到目前为止:

  1. 在您的IDE中创建一个空的Java项目。我更喜欢在Ronical应用程序开发人员/软件架构师或WebSphere Integration Developer中使用Java EE观点。
  2. 将WSDL(S)和架构导入IDE中的另一个空通用项目,而不是新创建的Java项目中。
  3. 右键单击主WSDL,然后选择生成Web服务客户端。
  4. 这里的另一个钥匙: :确保在似乎将客户端项目更改为您在第一步中创建的Java项目的向导中。默认情况下,向导将尝试针对一个新的或现有的动态Web项目,这不是您想要的。
  5. 确保选择JAX-WS作为实现。确保您选择希望客户端“便携式”,并确保告诉向导将WSDL包括在Java Project Client中。
  6. 待定您有井井有条(以及运行本地服务器),Rational/WebSphere工具现在应将JAX-WS Web服务客户端生成Java项目。

精彩的!伟大的!现在,您有了一个Java项目(又名JAR),您可以用来使其可移植。但是,如何使IBM工具快乐并将安全策略附加到客户端?

首先,我了解到最好将安全策略附加在WebSphere Application Server/Enterprise Service Bus/Process Server的管理控制台中。即使IBM为您提供API的操作,也有太多的事情要尝试用安全性来手动编码。相信我。更容易定义服务器上的安全性,然后将其分配给客户端。

无论如何...。订购它以将Jar视为Web客户端。这意味着将罐子作为J2EE实用程序罐将罐子连接到耳朵项目无法正常工作。耳朵不是“网级”,而是“应用程序级别”。因此,您需要将Java项目与J2EE模块依赖项屏幕中的EAR相关联,而不是作为实用程序JAR。而是选中说“ lib”的框。这意味着它可以可见/安装到动态Web项目/战争的LIB目录中(您还必须这样做)。令人惊讶的是,管理员现在将使您的客户端jar视为真正的JAX-WS Web服务客户端!现在,您可以将策略集和客户绑定与其相关联,以满足您的安全需求!

起初这可能看起来很奇怪,但确实有意义。毕竟,您正在处理 网络 服务,您正在使用 Web协议, ,因此在某些方面,将客户放在“网级“您的申请。

编辑: 我已经处理了安全政策,我发现 这本开发人员作品文章 最帮助我。特别注意 清单2 clienttest.java. 。可悲的是,您必须将所有安全性编码到客户端以使其最清洁。然后这是另一个陷阱。 IBM将允许您从WebSphere之外运行的客户端创建用户名令牌,但是它们不允许您在WebSphere之外创建LTPA令牌。因此,要测试这类令牌,您必须在本地包装和部署客户以测试全部。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top