问题标签 [wsse]
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.
websphere - IBM Websphere 应用服务器 7 JAX-WS 客户端 WSSE UsernameToken
我在 IBM Websphere 应用程序服务器 7 上使用 JAX-WS 使用 Web 服务。在传递 SOAP 消息时设置 WS 消息级别安全性。UsernameToken xmlns:wsu 未正确传递给提供者端。WebSphere 服务器上是否需要任何配置?
SOAP 消息打印在我的应用程序日志中,
wsse:UsernameToken wsu:Id="XXXX" xmlns:wsu ="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
Web 服务提供者收到 SOAP 消息,
wsse:UsernameToken wsu:Id="XXXX" xmlns:wsse ="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
不知道如何覆盖 SOAP 消息 WS Security 标头。
web-services - 如何使用 WS-Security Webservice?
我正在尝试使用受 WS-Security 保护的 Web 服务,但我遇到了一些问题。它是一个CMDBuild 网络服务。我已阅读CMDBuild Webservices Manual,但尚未成功使用它。
我使用了两种方法来尝试使用 Web 服务:使用 Apache CXF的SoapUI和Java 。我将描述我为尝试使用这两种方法使用 Web 服务所做的工作。
首先,我成功安装了CMDB应用程序,可以正常访问WSDL。如果您需要查看WSDL,可以在此处查看。我知道我必须发送一个用户名令牌,但我不知道我必须在哪里放置用户名令牌以及我是如何做到的。
Web 服务中提供的所有方法都可以在 CMDBuild 系统中进行身份验证后使用。身份验证是根据 WSS 用户名令牌配置文件 1.0 规范和摘要密码执行的。
另一个问题是我如何获得这个用户名令牌和摘要密码。我拥有的是用于访问应用程序 GUI 的应用程序用户名和密码。
肥皂界面
当我尝试使用 SoapUI 使用任何 Web 服务方法时,响应总是相同的:
这里,XML 请求(由 SoapUI 生成):
阿帕奇 CXF
使用 Java,我尝试使用 Apache CXF 并自动生成类(wsdl2java)。之后,我编写了一点代码:
输出:
c# - Lumesse Web 服务和 WSSE 纯文本安全问题
我们目前正在重新开发一个遗留项目,该项目利用来自 Lumesse 的 SOAP Web 服务,通过 HTTPS 调用。
http://developer.lumesse.com/Getting_Started
这是在 ASP.NET 应用程序中使用的;最初的开发人员(他早就离开了)从未利用提供的 WSDL,而是更喜欢手动构造请求并解析响应。虽然这完全是疯狂的,但这是 Lumesse 的文档在从 .NET 使用时实际建议的内容,因为他们的服务使用过时的 WSSE 纯文本安全性。
虽然我们通常不会违背常规,但我们更喜欢使用内置支持来使用 SOAP Web 服务,而不是像以前的开发人员那样滚动我们自己的解决方案。
我们已经遇到了一些问题,例如无法生成我们已经破解的临时类。
不幸的是,我们现在在发送成功的 SOAP 请求时遇到了困难。
当我们发出请求时抛出的异常是:
The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.
深入挖掘,实际响应如下:
这似乎是“签名或解密无效”。使用其他开发人员的笨拙解决方案,使用相同的凭据可以按预期工作。
为什么它会在这里失败,我们能做些什么来解决它?是否有可能不求助于滚动我们自己的请求和响应(甚至推荐?)服务?
http://schemas.xmlsoap.org/specs/ws-security/ws-security.htm
我们使用的 WSDL,由 Lumesse 提供:
https://api3.lumesse-talenthub.com/CareerPortal/SOAP/FoAdvert?WSDL
我们要达到的端点:
https://api3.lumesse-talenthub.com/CareerPortal/SOAP/FoAdvert?api_key=xxx
到目前为止,这是我们的代码,主要基于使用 C#、使用 WSSE 纯文本身份验证的 WCF SOAP 消费者?-这看起来像同样的问题。
SOAP webservice 的正确通信方式 WSSE Usernametoken具有相同的问题,但答案是我们将绑定详细信息存储在 web.config 中。
Lumesse 期望的示例请求,取自先前开发人员自制解决方案的一部分 - 按预期工作:
我们当前发送的示例请求:
任何帮助将不胜感激。
更新
对,使用这个被破解的 XML,我可以从 API 获得响应。
我只是不知道如何从我们的请求中生成它。再次任何帮助将不胜感激。
更新 2(让它工作!)
最后,大约 9 个小时后,我们到达了某个地方。我会把这个留给那些不幸使用 Lumesse(或其他类似的 Java Web 服务)的人。
我们上面发送的 XML 的主要问题是 Security 节点下的 Timestamp 节点。它将处理的无关 Nonce 节点,大概是因为它不是 Security 节点下的第一个节点?谁知道(这实际上是我第一次以任何形式使用 SOAP/WCF 哈哈!)。
所以,Timestamp 节点需要去。如果您需要使用标准绑定,如 basicHttpBinding 或 wsHttpBinding,则需要创建自定义绑定。这是一个模仿 basicHttpBinding 的示例,显然,取自http://www.mikeobrien.net/blog/removing-wss-timestamp-from-wcf/
示例配置:
然后按原样调用服务,传入凭据(您可能可以将它们存储在上面的 web.config 中,但如果我知道如何,我现在该死)。
}
再次感谢。
cxf - 如何使用 CXF/JAXWS 验证 XML 签名?
我真的很难找到可以使用 cxf 验证 xml 签名的教程。
我有一个这样的签名 xml 请求:(注意:签名值、摘要值和 X509 证书是虚拟值)
如何使用 cxf 验证签名?我看到了 WSPolicy 和 WSS4JInterceptors 的实现,它认为它不适合这种情况,因为请求没有<wsse:Security>
标签。任何想法都非常欢迎..提前谢谢
web-services - 创建安全代理时出错
我正在尝试通过 camel-config.xml 在我的 cxf 端点中配置 WSS4JInInterceptor
下面是我的camel-config.xml
当我调用我的代理网络服务时,我收到了错误。这是完整的错误跟踪..
我无法弄清楚这个错误是怎么回事,我该如何纠正这个错误?请帮忙解决这个..
symfony - Symfony2 通过集成测试的 API 对用户进行身份验证
我想通过运行我的集成测试的 API(外部用户提供程序)对用户进行身份验证。
我的 config_test.yml
登录(成功)后,下一步是询问用户信息,我得到:
我猜存储的会话发生了一些事情。我在 dev 和 prod 上使用 Redis 来存储会话。在测试环境中模拟会话,因为
手动操作就像一个魅力。
web-services - 来自不同服务器的 WSSE Web 服务调用?
我在 synfony 2.3 中编写了 WSSE 身份验证提供程序。 http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html
我已经生成了标头并调用了 Web 服务。它在同一台机器上正常工作,当调用不同的机器时,它得到内部服务器错误
{"error":{"code":500,"message":"Internal Server Error"}} 这是头生成函数:
这是 API 调用
我不明白为什么?从另一个国家的服务器调用时,时间戳有什么影响吗?请帮忙
php - symfony2 从身份验证中跳过 url
我正在使用 symfony2 开发 API,并且已经实现了 WSSE 身份验证。我需要跳过某些 URL 的身份验证,因为它们可以公开访问。可公开访问的 URL 具有如下格式:
还有一个可公开访问的 URL,即 API 文档:
除了上述 URL 之外,所有其他操作都应属于身份验证方案,我尝试在防火墙配置选项下调整 URL 模式:
安全.yml
这似乎不起作用,您能帮我从身份验证中跳过这些 URL 吗?我错过了正确的正则表达式吗?
编辑
这是我的 security.yml 的访问控制部分
jquery - setRequestHeader 在 URL 是本地时有效,但在 URL 很远时无效
我的目标是通过 WSSE 协议连接到 Symfony。当我尝试在本地连接到 Symfony 时,我有一个代码可以完美运行,但当我尝试连接到远程服务器上的同一个 Symfony 时却不行。(所有代码都一样,唯一改变的参数是 APILINK,我还设置了 .htaccess 以允许所有标头、请求和来源)
这是代码(javascript)
如您所见,我在 ajax 请求之前调用了 SimpleWSSEAuth.setup。
当 APILINK 位于本地时,这是我的请求:
这是我在 APILINK 很远时的请求:
如您所见,元素“ Authorization ”和“ X-WSSE ”出现在第一个请求中,但没有出现在第二个请求中。
如何更改我的请求以将这两个元素添加到远程服务器?是跨域问题吗?我试图在网上找到解决方案,但我没有找到任何实际可行的方法。
apache - 使用 WSSE 从远程服务器访问 orocrm REST API
我实现了一个 WSSE 客户端来访问我的 orocrm 实现 REST API。如果我在同一台服务器上运行它,它可以工作,所以我可以说它是正确的。如果我从同一个 LAN 上的另一台服务器运行它,它就不起作用(所以我确定只涉及本地 httpd 服务器)。这是代码,它在本地工作。是否有一些 httpd 指令可以设置为正确管理 WSSE 标头?