使用 WSE 3.0 添加 SOAP:HEADER 用户名和密码

2023-12-27

我已经成功创建了一个 WS 客户端,该客户端在不使用身份验证时可以正常工作。

但是,服务器(WebSphere)现在需要添加 ws-security 用户名令牌,而我很难做到这一点。生成的 SOAP 消息应该如下所示:

<soapenv:Envelope 
  xmlns:ns="http://foo.bar/1.0"
  xmlns:ns1="http://www.witsml.org/schemas/140"   
  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

  <soapenv:Header>

    <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <wsse:UsernameToken wsu:Id="UsernameToken-2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <wsse:Username>foo</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">bar</wsse:Password>    
        <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">foooooobar==</wsse:Nonce>
        <wsu:Created>2010-01-25T13:09:24.860Z</wsu:Created>
      </wsse:UsernameToken>
    </wsse:Security>

  </soapenv:Header>

  <soapenv:Body>
    <ns:fooBar>...</ns:fooBar>
  </soapenv:Body>

我已经下载并安装了 Microsoft 的 WSE 3.0 SDK,并在我的 Visual Studio 2005 项目中添加了对该 DLL 的引用。

我现在可以访问 Microsoft.Web.Services3.* 命名空间,但目前我不知道如何继续。

客户端代码是通过网络引用自动生成的,因此我只需做少量工作即可将消息发送到服务器未经验证的:

WS.FooResultHttpService ws = new WS.FooResultHttpService();
ws.Url = "http://foo.bar.baz";
ws.SendSomething(message);

我刚刚开始调查使用Microsoft.Web.Services3.Security.Tokens.UsernameTokenManager,但到目前为止我还没有能够启动并运行任何东西。

任何提示将不胜感激,因为我似乎无法在网上找到任何好的食谱。

Thanks!


确保你的代理类继承自Microsoft.Web.Services3.WebServicesClientProtocol.

您可以通过更改代理类本身或通过命令行生成它来完成此操作wsewsdl3.exe http://msdn.microsoft.com/en-us/library/aa529578.aspx/type:webClient转变。

然后您可以像这样传递凭据:

using Microsoft.Web.Services3;
using Microsoft.Web.Services3.Security.Tokens;
using Microsoft.Web.Services3.Security;
.
.
.
WS.FooResultHttpService ws = new WS.FooResultHttpService();
ws.RequestSoapContext.Security.Tokens.Add(new UsernameToken("blah", "blah", PasswordOption.SendPlainText));

这就是我过去为让 WSE3.0 在 Studio 2008 中运行而所做的事情。希望有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 WSE 3.0 添加 SOAP:HEADER 用户名和密码 的相关文章

随机推荐

  • 使用高分辨率纹理优化 SceneKit 性能

    我是一位相当有经验的 iOS 开发人员 但完全是 SceneKit 新手 试图在基本应用程序中模拟一些行星 为此 我使用火星 金星等的高分辨率法线和漫反射贴图 应用于基本球体 他们工作了 它们看起来棒极了 正是我想要的 问题是 我得到了ki
  • Jquery 模式对话框禁用滚动条

    正如您在此链接中看到的 http jsbin com ozapol 9 http jsbin com ozapol 9 Jquery 在某些版本的 IE 和最新版本的 Chrome 上禁用滚动条 我还没尝试过其他的 有没有办法保持滚动条启用
  • 正则表达式中的命名捕获组

    我需要正则表达式的帮助来捕获以下字符串中的数字和连字符 一些文字和东西 200 1234EM 一些其他东西 它也可以不带连字符的部分出现 一些文本 123EM 其他文本 我需要在命名捕获组中使用 200 1234 或 123 我试过这个 b
  • 嵌入双引号的 CSV 解析

    我写了一个简单的 CSV 文件解析器 但看完之后有关 CSV 格式的 wiki 页面 http en wikipedia org wiki Comma separated values我注意到基本格式的一些 扩展 通过双引号专门嵌入逗号 我
  • 如何让 ActionController::Live Streaming 与 Thin 一起工作?

    Question 你能用吗thin with ActionController Live实现服务器端事件 SSE 和长轮询 如果是这样 怎么办 Context 虽然标题是重复的如何让 Rails 4 ActionController Liv
  • Python 2.6.6 中的小数和科学计数法问题

    我在处理十进制值时遇到困难 在某些情况下需要将其用于算术 而在其他情况下则需要将其用作字符串 具体来说 我有一份费率清单 例如 rates 0 1 0 000001 0 0000001 我使用它们来指定图像的压缩率 我最初需要将这些值作为数
  • 编辑数据时如何获取选定值 [codeigniter]

    当我编辑数据时 如何获取选定的值 但我仍然可以选择 codeigniter div class form group div
  • 当 DataFrame 列中的值以字符串开头时,使用 lambda 替换它们

    我有一个数据框 import pandas as pd import numpy as np x Value Test XXX123 XXX456 Test df pd DataFrame x 我想使用 lambda 将以 XXX 开头的值
  • mysqli::real_connect(): (HY000/2002): 连接被拒绝

    我使用 PHP Mysql 和 Codeigniter 版本 3 创建一个网站 然后将其托管在 iPage 上 当我实时上传时 我会更改配置文件 db default array dsn gt hostname gt 66 96 147 1
  • AndroidAnnotations如何在onCreate之后添加init代码

    如果我有一个活动定义为 EActivity R layout activity login public class LoginActivity extends Activity 这将为我创建 onCreate 方法 但我想在 onCrea
  • 从字符串中按 ID 提取元素?

    我有一个包含以下文本的字符串 p Apples and oranges p div ul li 196 pfel li li Birnen li ul div p Men and women p 现在我需要一个 JavaScript 函数来
  • 使用streamreader逐个字符读取并输出文本文件

    我想做的是读取文件 a txt 并在一行中输出每个字符我真的很难解决这个问题 任何帮助将不胜感激 如果您编写代码 请发表评论 以便我可以理解更清楚 因为我是初学者 谢谢 namespace ConsoleApplication13 clas
  • 获取模块的所有功能

    一个项目具有以下结构 modulename init py one function 1 py function2 py init py two another function py yet another function py ini
  • 使用垂直分割打开新的 Emacs 缓冲区

    如何在 Emacs 中将垂直分割设置为默认而不是水平分割 My use case I want to compare a Python file with an older revision of itself from the svn r
  • 在 docker buildkit 中使用秘密标志的正确方法

    我正在努力解决加文提到的同样问题这个问题 https stackoverflow com questions 56865849 setting docker env var from build secret 特别是在新docker构建秘密
  • 尝试获取准确的信息(CTE - 递归)

    我有不同的桌子和goal是获取每个客户的批准工作流程 以这种方式显示该信息 gt 客户 批准者1 批准者2 批准者3 批准者4 首先 我有一个名为实体的表 12 Math Andrew 308 CHAIN1 MathAndrew 13 Jo
  • 为什么应该避免在 servlet 中使用 InheritableThreadLocal?

    我在用InheritableThreadLocal in my Servlet班级 这样它就可以从它的子线程中使用 这是邪恶的使用吗InheritableThreadLocal在线程池执行器中 比如servlet线程池 我的问题 1 为什么
  • Three.js - 蒙皮骨架网格物体实例、动画和混合

    我正在开发一款小型多人游戏 该游戏有一个单一皮肤的玩家网格 有许多玩家使用它 一些背景 我尝试通过 Maya 和 Blender Collada 导出加载 两者似乎都引用了某种形式的动画数据 但我无法让它工作 我尝试过 Maya JSON
  • Flutter - 仅在首次加载时无法加载资源

    我在我的 flutter 应用程序上加载图像 如下所示 Image asset imageFilePath fit BoxFit cover 当我第一次在模拟器上运行应用程序时 出现以下异常 I flutter 7194 图像资源服务捕获异
  • 使用 WSE 3.0 添加 SOAP:HEADER 用户名和密码

    我已经成功创建了一个 WS 客户端 该客户端在不使用身份验证时可以正常工作 但是 服务器 WebSphere 现在需要添加 ws security 用户名令牌 而我很难做到这一点 生成的 SOAP 消息应该如下所示