RAD - 如何在websphere应用程序服务器管理控制台中为JAX RPC添加用户名标记

时间:2017-04-10 09:24:27

标签: web-services websphere ws-security rad jax-rpc

我创建了Web服务并尝试添加安全性部分。我正在使用RAD并想知道如何在webservices.xml扩展选项卡中添加用户名令牌?

感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:1)

@parthkansara添加了一条评论,询问如何针对JAX-WS应用程序执行此操作。我正在回答该评论,作为对此主题的另一种回答,因为在评论字段中没有足够的字符可以这样做。

您可以在RAD中为JAX-WS应用程序添加WS-Security Policy和Bindings。但是,这不是最直接的事情。另外,如果您通过RAD应用策略/绑定并进行部署,然后使用管理控制台对其进行修改,那么您使用管理控制台所做的操作将不会生效。这是非常令人困惑的行为,在我撰写有关此问题的疑难解答文章之前,我经常会得到一些故障报告。如果要使用RAD部署应用程序,建议您使用管理控制台(而不是RAD)应用策略/绑定。如果这样做,您的策略/绑定将在整个重新部署过程中保持不变;仅当您卸载应用后,它们才会消失。

如果您要导出耳朵,我只建议您使用RAD应用策略/绑定,然后使用管理控制台安装耳朵,而不是直接通过RAD进行部署。

因此,我将向您提供使用管理控制台在RAD部署的应用程序上添加UsernameToken的说明。

您需要做的第一件事是确保RAD使用服务器上的资源,而不是工作区上的资源

  1. 窗口>显示视图>服务器
  2. 在“服务器”窗格中,右键单击服务器>“打开”
  3. 在右侧,展开“ WebSphere Application Server的发布设置”

    • 如果当前设置为“使用工作空间中的资源运行服务器”,请执行以下操作:
      1. 将设置更改为“使用服务器上的资源运行服务器”
      2. 点击文件>保存
    • 更改为“使用服务器上的资源运行服务器”后,必须先卸载,然后重新安装该应用程序。仅进行重新部署是不够的。请执行以下操作:

      1. 在“服务器”窗格中,右键单击服务器>“添加和删除...”
      2. 在右侧的“已配置”部分中,选择您的应用程序
      3. 点击删除
      4. 单击完成
      5. 在“服务器”窗格中,右键单击服务器>“添加和删除...”
      6. 在左侧的“可用”部分中,选择您的申请
      7. 点击添加
      8. 单击完成

创建jax-ws自定义策略集:

  1. 在管理控制台中,单击“服务”>“策略集”>“应用程序策略集”。
  2. 点击新建。
  3. 指定名称= UntPolicy。
  4. 点击“应用”。
  5. 在“策略”下,单击“添加”>“ WS-Security”。

编辑自定义策略集

  1. 删除数字签名,加密和时间戳。
    1. 在管理控制台中,单击WS-Security> Main Policy。
    2. 取消选择消息级别保护。
    3. 点击“应用”。
  2. 添加UsernameToken。
    1. 在“策略详细信息”下,单击“请求令牌策略”。
    2. 选择添加令牌类型。
    3. 选择用户名。
    4. 单击“确定”。

配置客户端以使用UntPolicy策略集。

  1. 在管理控制台中,单击服务>服务客户端>(serviceName)
  2. 检查您要对其应用策略的服务/端点/操作。如果您希望将其应用于所有这些对象,请仅选中顶部的一个对象
  3. 点击附加策略集> UntPolicy

为客户端创建自定义绑定。

  1. 再次检查资源。
  2. 点击分配绑定
  3. 点击“新应用程序特定绑定”
  4. 指定绑定配置名称。名称:untClientBinding
  5. 单击添加> WS-Security
  6. 如果“主消息安全策略绑定”面板未显示,请选择“ WS-Security”。

编辑客户端的自定义绑定。

  1. 点击身份验证和保护
  2. 编辑身份令牌生成器以发送身份用户名。
    1. 点击请求:myToken。
    2. 点击“应用”。
    3. 单击回调处理程序。用户名=(yourUserid)密码=(yourPassword)
      • 避免麻烦:这是在提供者系统的用户注册表上有效的用户名/密码。
  3. (可选)如果配置UsernameToken,请添加以下WS-Security定制属性:
    • com.ibm.wsspi.wssecurity.token.username.addNonce = true
    • com.ibm.wsspi.wssecurity.token.username.addTimestamp = true
    • 添加了这些自定义属性,因为它们是在UsernameToken使用者默认提供程序常规绑定上指定的。如果我们在此处未指定这些属性,则您将需要从默认提供程序常规绑定中删除这些属性,或者为不包括这些属性的提供程序创建应用程序特定的绑定。
  4. 单击“确定”。
  5. 点击保存

重新启动应用程序

  • 启动带有附加策略的应用程序后,如果修改了策略,则必须重新启动应用程序服务器以获取更改。
  • 启动带有附加通用绑定的应用程序后,如果修改了通用绑定,则必须重新启动应用服务器以获取更改。

测试应用程序。

要在跟踪中查看入站/出站SOAP消息,请执行以下操作

  1. 添加以下跟踪规范:

    • com.ibm.ws.webservices.trace。* = all
  2. 重新启动应用程序服务器。

  3. 测试应用程序。
  4. 在(profileRoot)/ logs /(serverName)/trace.log中的跟踪中搜索以下字符串:

    • 绑定http
    • 这应该在入站和出站消息之间切换。
  5. 如果您的客户端和提供程序都在同一个JVM中,则会看到所有4条消息:
    • 出站HTTP SOAP请求
    • 入站HTTP SOAP请求
    • 出站HTTP SOAP响应
    • 入站HTTP SOAP响应

来源:这些步骤是从WebSphere知识中心的此任务执行的:

https://www.ibm.com/support/knowledgecenter/SSAW57_9.0.0/com.ibm.websphere.nd.multiplatform.doc/ae/twbs_stand_alone_security_token.html

在WebSphere WS-Security故障排除指南中,有一个页面包含可用的jax-ws策略/绑定示例的列表:

WebSphere WS-Security Examples : JAX-WS Policy/Binding Configuration and Code Samples

该页面上有很多内容,包括但不限于:

  • UsernameToken
  • LTPA
  • 签名
  • 加密
  • 常规绑定
  • SAML

答案 1 :(得分:0)

我一直这样做,但是我使用向导,因为手动操作很容易出错。

您没有说是否要向客户端,提供商或两者添加约束。我会给你两个指示。我在我的例子中使用HelloService和HelloSvcClient:

将独立的UsernameToken添加到客户端:

1)切换到J2EE Perspective

a)Window-> Open Perspective-> Other-> Java EE

b)好的

2)选择左侧的“服务”选项卡

3)展开JAX-RPC->客户端

4)右键单击HelloSvcClient:service / HelloService - > Secure Web Service Client-> Add Stand Alone Security Token

  • 令牌类型:用户名令牌

  • 回调处理程序:(选择一个)

    ** NonPromptCallbackHandler(默认 - 硬编码用户名/密码)

    ** GUIPromptCallbackHandler(提示用户输入用户名/密码 - 无法在应用服务器上运行)

    ** StdinPromptCallbackHandler(从stdin获取uid / pw - 无法在应用服务器上运行)

5)下一步

6)用户名和密码

  • 用户ID :(用户ID)

  • 密码:(密码)

7)完成

将独立的UsernameToken添加到提供商:

1)选择左侧的“服务”选项卡

2)展开JAX-RPC

3)右键单击HelloSvc:HelloService-> Secure Web Service->添加独立安全令牌

4)WS-Security添加服务端安全性令牌

  • 令牌类型:选择用户名令牌

  • JAAS配置名称:system.wssecurity.UsernameToken

5)完成

必要时从服务配置中删除来电者部分

如果您的服务器未启用安全性,则您的服务将无法进行身份验证。在这种情况下,在服务使用者配置中,您必须删除令牌的调用者部分,以便在发出请求时不会出错。如果您确实在服务器上启用了安全性,请跳过此步骤。

1)选择左侧的“服务”选项卡

2)展开JAX-RPC

3)右键单击HelloSvc:HelloService-> Show-> Web服务扩展编辑器

4)扩展程序标签

重新发布应用

1)转到“服务器”窗格

2)右键单击所需的服务器 - >发布