问题标签 [ws-security]

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 回答
3839 浏览

java - 从 Web 服务 (JAX-WS) 中访问用户名/密码?

我们正在实现一个 Web 服务,它将充当客户端和另一个应用程序之间的中间层。我们对 Web 服务的要求是,我们需要使用标准 WS-Security 在 SOAP 标头中发送用户名和密码。

Web 服务实现需要获取通过方法调用传入的信息,并将其与用户名和密码结合起来才能调用其他应用程序,这就是我的问题开始的地方。

我想不出一种简单的方法来从我的 Web 服务实现中的 SOAP 标头获取用户名和密码。我可以通过注入的 WebServiceContext 访问用户主体(用户名),但我没有看到任何简单的方法来获取密码。

我可以访问 SOAPHeader 并可能解析 XML 以获取密码元素,但这似乎是解决此问题的一种非常混乱的方法。

我对 JAX-WS 和 WS-Security 的了解并不如我所愿。我希望我错过了对其他人来说显而易见的东西——也许我需要实现某种处理程序?

0 投票
1 回答
275 浏览

web-services - STS 在 Web 服务中的安全优势是什么?

我已经开始阅读 Web 服务的安全性(尤其是身份验证),并且我看到很多对安全令牌服务的引用。

据我所见,他们采用用户名密码(或其他东西),并在验证时返回一个数字令牌。与首先依赖用户名密码相比,使用此令牌如何更安全?

0 投票
2 回答
1343 浏览

java - 使用 ws-security 签署消息时要签署什么

我正在为我的 Web 服务添加安全性并选择签署TimestampToken.

在阅读文档时,我发现了很多他们签署消息的Body示例SOAP

我的问题是:什么是最好的签名?

据我了解,如果签名很大,Body可能会导致性能问题。Body

谢谢。

0 投票
1 回答
851 浏览

cxf - 如何在 Mule 的入站 CXF 服务中设置 WS-SecurityPolicy?

在配置处理 UsernameToken 和签名的服务时,它的设置如下:

但是,如何创建允许哪些算法以及应该签署消息的哪些部分的策略呢?

0 投票
2 回答
8108 浏览

asp.net - 在 WCF 代理中实现 Ws-security

我已将基于轴的 wsdl 作为服务参考导入到 VS 2008 项目中。

我需要能够传递安全详细信息(例如用户名/密码和 nonce 值)来调用基于轴的服务。

我已经考虑为 wse 做这件事,我理解这个世界讨厌(没有问题)

我对 WCF 的经验很少,但是由于 SO,我现在已经研究了如何物理调用端点,但不知道如何设置 SoapHeaders,如下面的架构所示:

非常感谢任何帮助

谢谢,马克

0 投票
1 回答
15524 浏览

php - 如何在php5中实现ws-security 1.1

我正在尝试在 PHP5 中使用 Soap 调用 Web 服务,为此,我需要使用 WS-Security 1.1。

(在 java 和 .NET 中,这都是自动生成的。)

是否有任何框架可用于在 PHP 中轻松生成安全标头?还是我必须自己添加整个标题?

WS-Security 1.1 规范:http: //oasis-open.org/committees/download.php/16790/wss-1.1-spec-os-SOAPMessageSecurity.pdf

0 投票
0 回答
1954 浏览

wcf - WCF 客户端使用带有消息保护客户端策略的 username_token 将消息加密到 JAVA WS

我正在尝试创建一个 WCF 客户端 APP,它正在使用一个使用带有消息保护客户端策略的 username_token 的 JAVA WS。服务器上安装了一个私钥,并且从 JKS 密钥库文件中导出了一个公共证书文件。我已通过个人证书下的 MMC 将公钥安装到证书存储中。

我正在尝试创建一个绑定,该绑定将加密消息并将用户名作为有效负载的一部分传递。我已经研究和尝试了大约一天的不同配置。我在msdn论坛上发现了类似的情况:

http://social.msdn.microsoft.com/Forums/en/wcf/thread/ce4b1bf5-8357-4e15-beb7-2e71b27d7415

这是我在 app.config 中使用的配置

这是我正在使用的客户端代码,这是我设置客户端证书的地方:

这是我得到的 .NET 客户端错误:错误日志:安全信息无效。

在 Java WS 端,我跟踪日志:

SEVERE:启用加密,但请求中没有加密密钥。

我跟踪了 SOAP 标头和有效负载,并确认不存在加密密钥。

我也尝试了其他一些绑定,但没有成功:

您的帮助将不胜感激!谢谢!


更新2:

更多信息,我能够更进一步,但仍然没有雪茄:(

我将 app.config 绑定部分的 authenticationMode 修改为 UserNameForCertificate 并指定 textMessageEncoding 以使用 Soap1.1

修改了端点条目以包含身份以绕过由于 dns 条目不匹配而导致的一些证书警告,这让我更进一步。

在客户端代码中指定 ServiceCertificate

现在跟踪 SOAP,我收到一条加密消息:

有效载荷:

但是在 JAVA WS 方面,我收到此错误消息:

org.apache.cxf.binding.soap.SoapFault:尝试执行身份验证时未找到用户名令牌。

JAVA Ws 使用的规范期望加密消息并将用户名作为有效负载的一部分传递。

关于如何确保用户名现在也通过的任何建议?正如您在上面的客户端代码中一样,我正在设置用户名。

0 投票
1 回答
6734 浏览

python - 如何在 ZSI、Python 中将 wsse:Security、UsernameToken 标头添加到 SOAP 请求中?

有没有办法将 wsse:Security, UsernameToken 标头添加到 ZSI、Python 中的 SOAP 请求中?我在网上搜索,但找不到答案。

0 投票
3 回答
18876 浏览

c# - WCF 客户端使用 WS-Security UsernameToken PasswordDigest 身份验证方案使用 Axis 2 Web 服务时出错

我有一个 WCF 客户端连接到基于 Java 的 Axis2 Web 服务(不在我的控制范围内)。它即将应用 WS-Security,我需要修复 .NET 客户端。但是,我正在努力提供正确的身份验证。我知道 WSE 3.0 可能会使它变得更容易,但我不希望恢复到过时的技术。

类似的问题(未解决),包括thisthisthis

SOAP 消息如下所示:

但是,我的看起来像这样:

我的客户端如下所示: PS 注意所需的SecurityHeaderType 参数。那是什么?

当前绑定如下:

我也尝试了自定义绑定并得到了类似的错误:

和端点(地址显然改变了......):

返回的自定义故障如下:

我已经阅读了很多关于自定义标头、令牌、绑定的内容,但我的大脑完全糊涂了。任何人都可以建议以正确格式发送消息的分步过程吗?

似乎是 WCF 的前进方向,使用自定义令牌,但是应该如何根据需要应用摘要和随机数?

欢迎任何帮助。

更新

我取得了一些有限的成功。我使用 Microsoft.Web.Services3 库创建了一个具有正确摘要的 UsernameToken。然后,我创建了自己的自定义行为,并在 BeforeSendRequest 方法中执行了以下操作来注入标头:

我添加这样的行为:

我现在可以看到标题:

但我得到了错误:

密码节点上似乎缺少类型属性:

但是,我不确定安全跟踪和日志记录设置是否全面删除了这些节点的属性和内容。我尝试在诊断日志记录中使用logKnownPii设置,但安全信息仍然模糊不清。关于那个有什么想法吗?

0 投票
1 回答
1644 浏览

esb - 如何使用 ws-security 在 cxf-se 中访问用户名原则?

我终于让 Ws-Security 与 CXF-BC 和 CXF-SE 组合一起工作。我现在正在尝试从 SE 中的 soap 标头访问用户名,以检查调用操作的用户的权限和所有权,但似乎没有办法做到这一点。我知道一旦消息从 BC 传递到 SE,它只需要 SOAP 主体并包装在 JBI msg 中。无论如何要在 JBI 消息中填充肥皂标题,或者让 BC 在收到 SOAP 消息时真正转发它。我尝试在 BC 和 SE 上禁用 JBIwrapper,虽然它以 SOAP 形式发送消息,但它只发送原始 msg san 标头的正文。

我不确定为什么在 BC/SE 上这样做如此困难和复杂,因为使用 JAXWS 相对容易。

谢谢