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

问题描述 投票:0回答:2

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

任何帮助表示赞赏。

谢谢。

web-services websphere ws-security rad jax-rpc
2个回答
2
投票

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

您可以在RAD中为JAX-WS应用程序添加WS-Security Policy和Bindings。但是,它不是最直接的事情。此外,如果您将策略/绑定应用于RAD并进行部署,然后使用管理控制台修改它们,您对管理控制台所做的操作将不会生效。这是一个非常令人困惑的行为,在我写一篇关于它的故障排除文章之前,我经常会遇到麻烦的报告。如果您要使用RAD部署应用程序,我建议您使用管理控制台应用策略/绑定,而不是RAD。如果您这样做,您的保单/绑定将在整个重新部署期间保留;如果您卸载应用程序,它们只会消失。

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

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

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

  1. 窗口>显示视图>服务器
  2. 在“服务器”窗格中,右键单击服务器>“打开”
  3. 在右侧,展开“发布WebSphere Application Server的设置” 如果当前设置为“使用工作区内的资源运行服务器”,请执行以下操作: 将设置更改为“使用服务器上的资源运行服务器” 单击文件>保存 更改为“使用服务器上的资源运行服务器”后,必须先卸载,然后重新安装该应用程序。只是进行重新部署是不够的。请执行下列操作: 在“服务器”窗格中,右键单击服务器>“添加和删除”... 在右侧的Configured部分中,选择您的应用程序 单击删除 单击完成 在“服务器”窗格中,右键单击服务器>“添加和删除”... 在左侧的“可用”部分中,选择您的应用程序 单击添加 单击完成

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

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

编辑自定义策略集

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

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

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

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

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

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

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

重启应用程序

  • 一旦启动了附加策略的应用程序,如果修改了策略,则必须重新启动应用程序服务器以获取更改。
  • 一旦启动了附加了常规绑定的应用程序,如果修改了常规绑定,则必须重新启动应用程序服务器才能获取更改。

测试应用程序。

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

  1. 添加以下跟踪规范: com.ibm.ws.webservices.trace。* =所有
  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

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

  • 用户名令牌
  • LTPA
  • 签名
  • 加密
  • 一般约束
  • SAML

0
投票

我一直这样做,但我使用向导,因为手动执行它容易出错。

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

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

1)切换到J2EE透视图

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)用户名和密码

  • 用户名:(userid)
  • 密码:(密码)

7)完成

将独立的UsernameToken添加到提供程序:

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

2)展开JAX-RPC

3)右键单击HelloSvc:HelloService-> Secure Web Service-> Add Stand Alone Security Token

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

  • 令牌类型:选择用户名令牌
  • JAAS配置名称:system.wssecurity.UsernameToken

5)完成

如有必要,从服务配置中删除呼叫者部分

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

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

2)展开JAX-RPC

3)右键单击HelloSvc:HelloService-> Show-> Web Service Extensions Editor

4)扩展选项卡

重新发布应用程序

1)转到“服务器”窗格

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

© www.soinside.com 2019 - 2024. All rights reserved.