问题标签 [usernametoken]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1007 浏览

wcf - 调用 WS-Security Web 服务的 WCF 错误:找不到 X509SecurityToken 的令牌验证器

我正在尝试使用 WCF 客户端通过 https 启用 WS-Security 来连接外部 Java Web 服务。该服务使用 UserNameToken 身份验证。

当客户端调用服务时,我收到此异常:
找不到“System.IdentityModel.Tokens.X509SecurityToken”令牌类型的令牌身份验证器。根据当前的安全设置,不能接受该类型的令牌。

我使用此配置的自定义绑定:

端点:

绑定:

我阅读了此链接http://webservices20.blogspot.co.uk/2010/10/wcf-cannot-find-token-authenticator.html并配置了 allowSerializedSigningTokenOnReply 值,但它失败了。

这是 WCF 生成的消息:

这是回应:

我尝试了使用 WSE 3.0 的 Web 服务并且它可以工作,但是我无法在服务器中安装该软件包,因为它是 Windows Server 2008 并且安装失败。

0 投票
2 回答
18407 浏览

wcf - WCF SOAP 1.1 和 WS-Security 1.0、客户端证书传输身份验证、消息正文签名的服务证书、用户名令牌、密码摘要、随机数

概括: 我正在开发一个 .NET 4.0 WCF 客户端,以使用 SOAP 1.1 和 WS-Security 1.0 使用 Web 服务(另一端是 DataPower,Java 服务)。WCF 客户端必须为传输层的相互身份验证实现客户端证书。消息正文需要使用单独的服务/签名证书进行签名。SOAP 标头还需要包含带有密码摘要的用户名令牌,并包含 Nonce 和 Created 标记。

我可以使用带有 BasicHTTPBinding 的 WSE 3.0 使用此 Web 服务。但到目前为止,我还没有成功地使用 WSHttpBinding 或 CustomBinding 实现 WCF。我已经尝试了所有的安全绑定元素,但到目前为止都没有运气。

我也在使用这里的 usernametoken 库(http://blogs.msdn.com/b/aszego/archive/2010/06/24/usernametoken-profile-vs-wcf.aspx)所以我可以添加密码摘要/随机数/在 SOAP 标头中的 UsernameToken 中创建。

我目前正在使用 SecurityBindingElement.CreateMutualCertificateBindingElement 我还尝试了其他几个,例如 AsymmetricSecurityBindingElement、TransportSecurityBindingElement 等(在下面的代码中注释掉)

CERTS: 我使用 MMC 将客户端证书和服务证书加载到证书存储中(顺便说一句,我在 Windows 7 上)。客户端证书和服务证书都有私钥。我已将 PFX 文件加载到 LocalMachine/Personal、LocalMachine/Root 和 LocalMachine/TrustedPeople。我还运行了 FindPrivateKey/ICACLS 来授予“IIS App Pool/DefaultAppPool”帐户的权限。尽管这些都不重要,因为我可以从我的机器上运行 WSE 3.0 代码,并且它可以在没有任何证书问题的情况下运行。

命令运行:

WCF 问题: 我目前收到来自 DataPower 网关的“无法为具有权限 'xxcom' 的 SSL/TLS 建立安全通道”消息。我认为这可能是因为网关正在获取服务证书并将其用于客户端身份验证,而不是使用我发送的客户端证书。我这样说是因为当我没有为端点指定 DNS 身份时,我收到一条消息,说网关期望 DNS 身份是“{服务的主题名称/签名证书}”。

这是 WCF 生成的 SOAP 请求,它给出了上述错误。WCF SOAP 请求看起来与 WSE SOAP 请求非常相似。上述错误很可能是由于 SSL/传输层的证书问题而发生的。

WCF SOAP 请求:

WSE 3.0 SOAP 请求(有效):

这是所有配置,请让我知道我做错了什么!

WCF web.config:当我在代码中进行所有配置时,我从 web.config 中删除了所有内容。

代码中的 WCF 配置:

我在 ServiceContract 和 OperationContracts 上添加了 ProtectionLevel.Sign,因为我只需要对消息正文进行签名。不过,我还没有走到这一步来验证它。

我已将以下内容添加到 web.config 以允许记录整个肥皂,包括 pii 数据

================

WSE 3.0(工作配置和代码): web.config:

...和 ​​WSE3 代码:

==========

那么,如何将上述 WSE 3.0 代码转换为 WCF?

0 投票
1 回答
1794 浏览

soap - 为 UsernameToken 身份验证和无加密设置 ws-security (Apache Rampart/C) 时出错

我在使用 Apache Rampart/C 1.3.0 设置 AXIS2/C Web 服务(axis2/c 1.6.0)时遇到问题(不要与他们的 java 对应物混淆,也就是“axis2”和“rampart”)为 UsernameToken验证。我不想加密,因为我首先尝试使用 SoapUI 进行测试;当我得到这个工作时,我会添加加密的东西(我也无法在没有安全策略的情况下设置 Rampart/c,它只会给我一个配置错误)。没有 Rampart,Web 服务工作得非常好。但是当我尝试为安全性配置 Rampart 时,我在响应中收到此错误:

当我转到 Axis2 日志时,我发现以下错误:

这很奇怪,就好像它根本找不到安全标头一样。我怀疑 SOAP 请求可能有问题,但我不知道那可能是什么。或者我发现了一个罕见的 Rampart/c 错误?

对于用户名和密码,我使用了 Rampart 示例提供的回调 .so,用户名“Alice”和密码“abcd!1234”。

以下是相关文件的完整列表(IP 地址已编辑):

服务.xml:

services.xml (替代;给出相同的错误):

SOAPUI 请求:

回复:

axis2.log(相关部分):

0 投票
0 回答
1014 浏览

wss4j - wss4j-1.6.10 中的 WSDoAllSender 类替换?

我有一个适用于 wssj4-1.5.12 的 WSDD。它看起来像这样:

但是,在切换到 wss4j-1.6.10 后,我得到了一个 ClassNotFoundException:

WSDoAllSender 似乎不再在 wss4j-1.6.4 API 中。但是,我似乎找不到它的替代品。wss4j 是否仍然支持用于 SOAP 连接的 UsernameToken?WSDoAllSender 的替换类是什么?

谢谢你。

0 投票
1 回答
1148 浏览

web-services - 开发 Web 服务 - 带有密码摘要认证的 UsernameToken 标头

我们正在尝试通过具有客户端证书和消息身份验证的 ABC 服务器托管服务。
客户端将提供服务需要理解的 WSSE UsernameToken Security 标头,并且必须进行适当的身份验证。

有两个选项 -<br> 1. WCF 服务 - 但它不支持开箱即用的摘要密码,因此我们可能需要找到使用自定义绑定或其他一些调整的方法。
2. 使用 WSE 3.0 的 Web 服务 - 我们需要了解如何开发 WSE 3.0 服务并利用它来处理以下安全标头。
WSE 3.0 的先决条件是什么,需要哪些工具和库?

任何帮助将不胜感激。

请求中预计会出现以下肥皂标题。

谢谢你,

0 投票
1 回答
324 浏览

axis2 - 在 UsernameToken 下的 ws-security 中,是不是一个有效的断言?

我们正在使用 Apache Axis2 实现 Web 服务并与 WS-Security 集成(使用 Apache Rampart 模块)。

我们正在尝试定义 不强制消费者在 Usernametoken 中发送密码的 Ws-Security 策略,因为我们仅针对数据库验证用户名 - 实际身份验证是通过密钥交换(非对称绑定)机制执行的。

当我们尝试使用以下断言时,Axis2 只是忽略了NoPassword

Ws-SecurityNoPassword不是有效的断言吗?

框架:

Apache Axis2 v1.6.2

阿帕奇城墙 v1.6.2

0 投票
0 回答
461 浏览

timestamp - WSSecurity - 接受没有时间戳或 wsu:created 的 UsernameToken 标头

我对 Webservice Security 比较陌生,并且我对安全标头有疑问。

我希望我的安全标头像这样被接受:

没有任何时间戳或 wsu:Created。

但是我还没有做到这一点。

发送带有此标头的请求时,我总是收到一个 WSSecurityException 告诉我缺少时间戳。将“在标头中包含时间戳”选项设置为 false 时,我得到一个 FailedAuthentication,因为在 UsernameToken 部分中需要 wsu:Created 元素。

UsernameToken 部分不需要 Created 部分需要什么配置?

这甚至可能吗?

谢谢

0 投票
3 回答
5167 浏览

security - Axis Web 服务标头安全密码文本

我是安全标头的新手,我需要您的帮助。我可以通过身份验证进行轴 Web 服务调用,这很容易,但在安全性方面存在困难。我有以下无法验证的安全标头,我知道这是因为用户名令牌,因为我得到异常:org.apache.ws.security.WSSecurityException:提供了无效的安全令牌(处理用户名令牌时发生错误)。

这是来自 soapui 的工作请求

<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsse:UsernameToken wsu:Id="UsernameToken-1"> <wsse:Username>tibco-admin</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">secret</wsse:Password> <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">d6zrRrsSdfulAUmTq6VFtQ==</wsse:Nonce> <wsu:Created>2014-01-07T15:55:58.816Z</wsu:Created> </wsse:UsernameToken> </wsse:Security>

这是来自 java 的失败请求:

我的Java代码是:

我硬编码了 nonce 的值以进行测试。

任何帮助或指示将不胜感激。

0 投票
1 回答
6103 浏览

java - 向 wsdl2java 生成的代码添加soap头认证

我正在从 wsdl 创建 Java Web 服务客户端。我使用 Eclipses 的动态 Web 项目和新的 Web 服务客户端通过 Apache Axis 1.4 使用 wsdl2java 生成代码。我需要向此代码添加 SOAP 身份验证,以便它与服务一起使用。我在生成的代码中找不到这样做的地方。经过大量研究,我发现了这一点,到目前为止,我一直将其用作我的代码的主干。

将 ws-security 添加到 wsdl2java 生成的类

在我收到“处理消息安全性时发生错误”或类似内容之前。现在我得到

“例外:不理解“MustUnderstand”标头:{ http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd }安全消息:无效的”

我已经尝试了很多方法来克服这个异常。这是我现在得到的代码。

此代码位于我的 Binding_ServiceStub 类中(在它的 createCall 方法中)。

我们已经使用这个 wsdl 在 C# 和 VB 中创建了客户端,并且只需更改 ClientCredentials 变量即可,该变量是生成的代理类的扩展。我希望在这里有类似的东西。

这也是来自 wsdl 代码的安全策略。

有谁知道我还能在这里做什么?为什么会发生这种异常?我尝试了许多不同的前缀和 setProcesses 和 setMustUnderstand 值组合,但都是徒劳的(并且基于我对这个异常的研究)。

如果有人知道将 Soap 标头身份验证添加到 wsdl2java 代码的方法,我也会采用这种方法。只需要这个工作,你会认为这样的事情会更简单一点,或者至少有更多的例子。

更新 - 确认使用 SOAPUI 传递的相同标头工作正常。一定是框架的东西?我创建了一个自定义处理程序来处理 SOAP 消息,但这没有帮助。Axis 1.4 和 JAX-RPC 是问题吗?(我知道它们已经过时但仍然......)

0 投票
1 回答
5218 浏览

web-services - 使用 soapUI 测试 WS 安全性 - 在消息有效负载中使用安全头

我是 web 服务和 WS 安全的新手。我有一个使用 CFX 拦截器的示例网络服务。以下是我拥有的配置文件。

cfx-servelet.xml:

当我使用 soapUI 工具在 HTTP 标头(而不是消息负载)中生成安全属性时,它起作用了。但我需要在消息有效负载中传递 wsse:security 属性(如下所示)

肥皂请求:

它正在返回错误消息:

肥皂反应:

日志文件有以下异常:

谁能告诉我我的标题是否做错了什么?任何帮助,将不胜感激。

谢谢