使用用户名通过 https 配置 WCF 以获得 WS-Security

2024-03-01

我正在尝试使用 WCF 客户端通过 https 调用基于 Java、启用 WS-Security 的 Web 服务,但似乎无法获得正确的安全配置。使用 SvcTraceViewer,我在尝试过的任何安全配置中都没有看到预期的安全标头。

我最近的安全配置是:

    <wsHttpBinding>
        <binding name="MySoapBinding" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
            allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
            maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
            messageEncoding="Text" textEncoding="utf-8"
            useDefaultWebProxy="true">
            <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="TransportWithMessageCredential">
            <transport/>
            <message clientCredentialType="UserName" negotiateServiceCredential="false" establishSecurityContext="false"/>
          </security>
        </binding>
    </wsHttpBinding>

我在代码中设置用户名/密码,如下所示:

    svc.ClientCredentials.UserName.UserName = TestBase.userName;
    svc.ClientCredentials.UserName.Password = TestBase.password;

Java Web 服务需要如下所示的安全标头:

<wsse:Security soap:mustUnderstand="1">
<wsu:Timestamp wsu:Id="Timestamp-bf41c571-7d32-438c-937e-7d83a3ac2d14">
<wsu:Created>2010-12-27T16:43:16Z</wsu:Created>
<wsu:Expires>2010-12-27T16:48:16Z</wsu:Expires>
</wsu:Timestamp>
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecurityToken-4c9b30b1-d697-4c64-89cb-a6d7e857aebf">
<wsse:Username>MyUserName</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">MyPassword</wsse:Password>
<wsse:Nonce>pzLdD4S+OCDG6Ut9Ur1oOQ==</wsse:Nonce>
<wsu:Created>2010-12-27T16:43:16Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>

我根本没有看到安全标头。

我在网上阅读了大量有关传输与消息级安全性和安全模式的内容,但似乎找不到正确的选项集。我应该如何配置我的绑定

  • https通讯
  • SOAP 标头中的用户名/密码,以纯文本形式 (WS-Security)
  • 需要时间戳
  • 需要随机数

事实证明,里克·斯特拉尔 (Rick Strahl) 也遇到了几乎完全相同的问题。事实证明 SvcTraceViewer 确实如此not显示实际的在线消息。然而,他的博客概述了通过 Charles(或者在我的例子中是免费的 Fiddler 2)代理查看实际消息的过程。

事实证明,我正在根据我调用的 Web 服务的要求发送时间戳元素,但如果这样做,WCF 会要求在响应中包含时间戳(我没有收到)。该错误消息非常具有误导性。幸运的是,我可以更改服务以返回时间戳。

http://www.west-wind.com/weblog/posts/205198.aspx http://www.west-wind.com/weblog/posts/205198.aspx

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

使用用户名通过 https 配置 WCF 以获得 WS-Security 的相关文章

  • 我可以使用 DataContract 序列化程序序列化 Dictionary 吗?

    我计划构建一个 WCF 服务 返回序列化为 JSON 的通用字典对象 不幸的是 序列化失败 因为对象可能总是不同的 KnownTypes 没有帮助 因为属性类型是 Dictionary 而且我不能说 KnownType 因为类可能总是不同
  • 是否可以通过服务类型的实例实例化 WebServiceHost,而无需无参数构造函数?

    我正在尝试创建自托管System ServiceModel Web WebServiceHost NET 4 但是我遇到了构造函数的问题 有以下三种选择 WebServiceHost 一个无参数的构造函数似乎毫无意义 因为无法指定服务的类型
  • Java 工具创建的 WSDL 文件的 WCF 序列化问题

    我的团队的任务是让几个内部开发的 NET 客户端应用程序连接到一些新的 Java Web 服务 Java Web 服务是第三方 供应商提供的 WSDL 文件 我们的团队修改 控制的能力有限 这意味着我们可能有权要求我们的供应商对 WSDL
  • WCF服务契约上的数据注释

    我有一个 WCF 服务 其中定义了一个 DataContract 类 每个属性都有 DataMember 属性 并且我已向其中几个属性添加了几个数据注释属性 Required 和 StringLength 然后 我在 ASP NET MVC
  • 数据库连接模拟失败

    我有一个 SL4 应用程序 它使用 WCF 与后端 SQL Server 2008 数据库进行通信 由于调用的存储过程需要数据库权限 其中一项 WCF 服务需要使用专用系统帐户连接到数据库 我尝试在服务代码中使用模拟来实现解决方案 例如 i
  • 是否可以从 VS2010 插件刷新 WCF 服务引用?

    我想在 VS2010 插件中 模拟 右键单击 更新服务引用命令 我有一个对包含 Silverlight 项目的引用 我知道服务引用的名称和服务的 url 我发现了这个 http dedjo blogspot com 2007 03 addi
  • 如何研究.NET 中的非托管内存泄漏?

    我有一个通过 MSMQ 运行的 WCF 服务 内存随着时间的推移逐渐增加 表明存在某种内存泄漏 我在本地运行该服务并使用 PerfMon 监视一些计数器 CLR 内存托管堆字节总数保持相对恒定 而进程的私有字节随着时间的推移而增加 这让我相
  • 如何自动执行/安排 IIS 中托管的 WCF 服务调用?

    我有一个非常简单的服务合同 用于管理自己的数据导入 类似于 using System ServiceModel namespace Company Services Domain Contract ServiceContract Name
  • 复制到其他计算机时无法在 WcfTestClient 中添加服务

    我想在另一台计算机上运行 WcfTestClient VS2012 中包含的一个 而不安装 VS2012 这可能吗 在我已经安装了 NET 4 5 的机器上 但是当我尝试添加 Web 服务时 它给了我以下堆栈跟踪 Exception Tex
  • msmq - 触发器 - 独立可执行调用不起作用

    过去几天我一直在尝试使用 msmq 触发器来调用 exe 文件 它永远不会被调用 这些是我遵循的步骤 创建了一个提及队列路径并检查了查看的触发器 启用 选中 创建了一个不带任何条件的规则 以便每当获得新消息时都会触发触发器 并选择提到独立可
  • 手动将 ClientBase 集合类型从 Array[] 更改为 List<>

    我将自己的 WCF 代理与 Client Base 一起使用 我想做一些类似于 svc util 中的 ct 属性的操作 并告诉代理返回 List 集合类型 我不能使用 List 因为实体由 nhibernate 管理 所以我必须使用 IL
  • 从事务范围调用 WCF 服务方法

    我有这样的代码 using TransactionScope scope TransactionScopeFactory CreateTransactionScope some methodes calls for which scope
  • 如何在WCF Rest服务中从流上传图像

    我正在尝试创建 wcf 服务 该服务将上传 pdf doc xls 图像等文件 但 pdf txt 文件正在上传并正确打开 但是当我尝试上传图像文件时 文件正在上传 但是图像不可见 OperationContract WebInvoke M
  • WCF 和数据契约上的接口

    使用 svcutil 创建 WCF 代理时 是否还可以包含数据协定继承的接口 例如 public class SomeType ISometype public string Name get set public interface IS
  • 如何在 REST WCF 服务中接受任意 JSON 对象?

    我想实现这样的服务方法 OperationContract WebInvoke RequestFormat WebMessageFormat Json ResponseFormat WebMessageFormat Json public
  • WPF 和 WCF 应用程序的用户身份验证/授权的“最佳实践”是什么?

    假设我有一个 NET 富客户端 WPF 应用程序 它将同时部署在 3 个不同的场景中 客户端和服务器代码在单个进程中运行 客户端代码在 Intranet 计算机上运行 并通过 WCF 与运行应用程序 域 基础设施代码的服务器计算机进行通信
  • 我应该何时何地使用 WCF

    我浏览了几个在线教程 其中涵盖了 WCF 的优点 如何构建服务 客户端等 不过 我想了解一点整体情况 问题 gt 什么样的应用程序或应用程序中的哪些功能要求我使用 WCF 功能 一个具体的例子应该可以更好地帮助我 有几种情况 需要 WCF
  • 没有端点在 net.pipe://localhost/ 上监听

    我有两个 WCF 服务托管在 Windows Server 2003 计算机上的单个 Windows 服务中 如果 Windows 服务需要访问任一 WCF 服务 例如发生定时事件时 它将使用公开的五个命名管道端点之一 不同的服务协定 该服
  • WCF 服务主机配置 - 请尝试将 HTTP 端口更改为 8732

    我的 PC 上运行着一个复杂的基于 WCF 服务的解决方案 但由于安装 Windows 8 1 时出现问题 我不得不 刷新 我的 PC 现在我已经重新安装了 Visual Studio 2012 我的项目不再正常运行 当我调试单元测试时 w
  • 添加对共享类的多个 WCF 服务的服务引用

    我正在尝试将我的 WCF Web 服务拆分为几个服务 而不是一个巨大的服务 但是 Visual Studio Silverlight 客户端 复制了两个服务共享的公共类 这是一个简单的例子来说明我的问题 在此示例中 有两个服务 两者都返回类

随机推荐

  • Google 地图上的多个标记:仅显示最后一个标记

    我在地图上显示多个标记时遇到问题 该代码首先循环遍历一个数组 然后对纬度 经度值进行反向地理编码 然后显示标记并将 infoWindow 的内容设置为返回的地址 我的代码如下 for var i 0 i lt useNowArray len
  • @tailrec 如何工作

    我已经使用并阅读了 tailrec注释具有尾递归方法 我浏览了许多解释它的链接 例如 它仅在自调用函数时有效 并且不应被覆盖等 到处都提到compiler optimizes 但是编译器做了什么魔法 概念来使其成为尾递归 对于下面的简单函数
  • 无法从 powershell 运行 Elixir 应用程序

    当我打字时iex S mix在 PowerShell 中我收到此错误 Invoke Expression A positional parameter cannot be found that accepts argument mix At
  • 每行后动态重复标题行

    如何在 gridview 的每一行之后重复标题行 您可以将代码添加到网格的 rowdatabound event 中 protected void GridView RowDataBound object sender GridViewRo
  • Extjs XTemplate 两个同级数组循环?

    我想将 XTempate 与以下 json 数据一起使用 在另一个数组中循环一个数组 var data name xxx rowTitleArr 1 2 3 colTitleArr a b c var tpl name
  • 如何压缩包含超过 12GB 数据的文件夹

    我需要压缩一个包含大量文件的文件夹 当我尝试在命令行中进行压缩时 它显示压缩错误 输入文件读取失败 我搜索网络并发现 ZIP 文件格式 仅处理可以的文件长度 包含在 32 位整数中 如果是这样 那么它一定是我收到错误的原因 因为我的文件夹大
  • 如何使用asihttprequest接受自签名证书

    我正在尝试获取自签名证书来使用我的应用程序 我现在正在使用 ASIHTTPRequest 库 如下所示 IBAction sendHttpsRequest Set request address NSMutableString databa
  • 现在 CGI 脚本有哪些用途?

    我非常熟悉一般的 Web 编程语言 但我现在使用的工具之一是 CGI 我只能说 CGI 脚本相当慢 CGI 如今仍然普遍使用吗 如果不是的话 被什么取代了 是否存在 CGI 仍然存在并被积极使用的利基功能 CGI是协议 它是创建动态页面最基
  • 使用循环合并和创建表

    我尝试搜索如何使用循环合并和创建多个表 但找不到我正在寻找的内容 我有四个表 表 1 1 1 2 1 3 和表 2 表1 1 1 2和1 3共享相同的列但具有不同的行 表 2 与表 1 1 1 2 和 1 3 具有相同的第一列 具体来说 表
  • 防止线程在处理异常后分离时调用 std::terminate()

    我有自己的线程类 旨在帮助安全地管理异常 它看起来像这样 为了简单起见 跳过了其他构造函数和互斥体 class ExceptThread public std thread public template
  • 打开磁力链接而不失去焦点

    javascript 或其他 有没有办法在浏览器失去焦点的情况下处理磁力链接 这有点像在后台打开一个选项卡而不离开当前页面 我最近遇到了类似的问题 并且能够通过在页面上创建命名框架并将其用作目标来解决该问题window open windo
  • 正则表达式:一次性获取没有扩展名的文件名?

    我只想使用正则表达式获取文件名 所以我一直在尝试简单的事情 例如 当然 只有当文件名具有一个扩展名时才有效 但如果是的话adfadsfads blah txt我只是想adfadsfads blah 我怎样才能用正则表达式做到这一点 关于大卫
  • 检查 C 中的溢出

    让我们有 int a b c may be char or float anything actually c a b 让int类型用4个字节表示 假设 a b 需要比 4 个字节多 1 位 即 假设结果是 1 00 0 32 个零 二进制
  • Surface SDK 可以在 Visual Studio 2012 上运行吗?

    我需要使用 Surface SDK 创建一个 WPF 应用程序 我正在使用 Visual Studio 2012 并且根据this https stackoverflow com questions 11624895 how can i u
  • AndroidNotification.Builder与NotificationCompat.Builder[重复]

    这个问题在这里已经有答案了 我看到的几乎所有 Android 通知示例代码似乎都使用了NotificationCompat 我已经使用Notification Builder编写了自己的代码 我不清楚使用NotificationCompat
  • 我应该如何多次插入多条记录?

    我有一个名为Entry声明如下 class Entry string Id get set string Name get set 然后是一个接受多个这样的方法Entry使用 ADO NET 插入数据库的对象 static void Ins
  • 两次之间经过的小时数,与国家/地区和时区无关

    我们如何确定两次之间经过的小时数 例如 旧金山下午 3 30 迪拜下午 7 30 我不清楚的部分是 是否存在通过考虑时区和国家来计算减去的时间跨度的通用方法 我使用 C 作为主要语言 任何帮助将不胜感激 提前致谢 您询问的是 旧金山下午 3
  • 如何在Python中使用wrap_strategy来处理谷歌表格?

    我有一个 python 代码 它使用驱动器和工作表 api 来列出文件夹内的文件 我在这个文件夹中有多个谷歌工作表 其中一些在文本之间有空格 就像图片中给出的那样 我想使用 googlesheet api 将所有单元格的文本换行更改为溢出
  • iOS - 具有自动布局的比例间距

    我正在尝试使用界面生成器创建一个完美的比例视图 到目前为止 一切都很好 我正在以编程方式缩放字体 按钮等 唯一的问题是元素之间的约束 间距 保持不变 我想避免为间距限制创建出口 因为它看起来很混乱 我希望元素之间的间距在拉伸元素时保持成比例
  • 使用用户名通过 https 配置 WCF 以获得 WS-Security

    我正在尝试使用 WCF 客户端通过 https 调用基于 Java 启用 WS Security 的 Web 服务 但似乎无法获得正确的安全配置 使用 SvcTraceViewer 我在尝试过的任何安全配置中都没有看到预期的安全标头 我最近