我在尝试向服务器发送soap请求(soapCall)时收到错误.
Fatal error: Uncaught SoapFault exception: [ns1:InvalidSecurity] An error was discovered processing the <wsse:Security> header
Run Code Online (Sandbox Code Playgroud)
我需要发送ws-security标头
<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-1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>userID</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">passwd</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">ZTQ3YmJjZmM1ZTU5ODg3YQ==</wsse:Nonce>
<wsu:Created>2013-07-05T19:55:36.458Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
Run Code Online (Sandbox Code Playgroud)
经过大量的研究后,我认为我得到的问题是nonce没有达到要求.正如我正在编制肥皂标题看起来像我得到的例子.唯一未知的因素是计算这个随机数......
从我得到的示例nonce,它是一组24个数字+字母+特殊字符
像这样的东西
ZTQ3YmJjZmM1ZTU5ODg3YQ==
Run Code Online (Sandbox Code Playgroud)
但是,我不太确定你如何从php计算wsse nonce ...有什么标准吗?
我的代码
$nonce = sha1(mt_rand());
Run Code Online (Sandbox Code Playgroud)
结果
dabddf9dbd95b490ace429f7ad6b55c3418cdd58
Run Code Online (Sandbox Code Playgroud)
这与示例完全不同......我相信这就是为什么这段代码无效的原因.
所以我正在做更多的研究,现在我正在使用它
$NASC = substr(md5(uniqid('the_password_i_am _using', true)), 0, 16);
$nonce = base64_encode($NASC);
Run Code Online (Sandbox Code Playgroud)
结果
NzJlMDQ4OTAyZWIxYWU5ZA==
Run Code Online (Sandbox Code Playgroud)
现在,它看起来类似于示例,但我仍然从头开始显示该错误.
有人可以帮我一把吗?
用soapUI进行一些进一步测试.
相同的userID和passwd,将passwordtype设置为passwordtext
它正在发挥作用.
有谁知道soapUI如何计算nonce?或者知道soapUI如何通过ws-security?
我正在尝试将nonce值添加到内联脚本中以满足更严格的CSP。但是,我遇到了一个奇怪的问题,即chrome正在从现时属性中剥离值。当我卷曲页面时,会出现现时值。这导致脚本现在无法通过CSP测试,因此无法执行。我以为这可能是由于流氓扩展引起的,但是在完全干净的chrome版本上却失败了。(OSX上的版本73.0.3683.103)随机数的值是一个随机的256位基本编码的字符串,因此它应满足随机数的所有要求。
有人知道发生了什么吗?难道我做错了什么?
我一直在讨论关于nonce生成和PHP的各种问题,但没有找到关于管理nonce的"一次"方面的细节的任何讨论.
这是我的情况.
我有一些PHP需要访问web服务,并且对webservice的请求需要我的PHP生成一个nonce并签署请求(即,我不是从webservice请求nonce).那部分很容易.
我正在努力寻找一个好的解决方案,以防止在有多个会话进行时重用nonce.
在我看来,我可以做三件事.
一种是将nonce/timestamp对存储在数据库中,然后实现逻辑以检查数据库中是否存在现有的nonce,使旧的等效期满等.这也需要一个TRANSACTION
或者LOCK TABLE
用于线程安全.呸.
二,是将存储器中的nonce存储在APC中的nonce(在我的情况下不能使用memcached),并让TTL处理到期.在这种情况下,线程安全是否需要将逻辑包装在sem_acquire()
/ sem_release()
或apc_add()
真正的线程安全?我的这个主要关注的是如何处理这种情况,如果apc_add()
还是apc_store()
实际上失败,因为缓存已满.
三,是使用Cache_Lite而不是APC.
还有其他选择吗?据我所知,OpenID使用Cache_Lite管理nonce,所以我怀疑这是最好的解决方案,但我想在提交之前检查所有选项.
谢谢.
我创建了一个插件,取代了我之前编写的插件,并添加了一些额外的东西.我想在我的旧插件的设置页面中创建一个警报,其中包含下载和安装我的新插件的链接,并告知他们开发人员不再支持旧插件.目前,从我的管理面板的插件页面,安装链接如下所示:
http://www.example.com/wp-admin/network/update.php?action=install-plugin&plugin=wptouch&_wpnonce=a8d64aa295
Run Code Online (Sandbox Code Playgroud)
在我看来,创建URI时至少要记住两件事:
有谁知道如何正确地做到这一点?生成此URI时还需要考虑其他事项吗?
在此先感谢您的帮助.
有没有人知道是否存在以zend形式使用nonce的方法.
注意:nonce字段用于验证表单的内容来自当前站点上的位置而不是其他位置.nonce不提供绝对保护,但应防止大多数情况.在表单中使用nonce字段非常重要.
提前致谢
Smart Wordpress的人说插件开发人员应该在每个AJAX请求中使用一个nonce,这个请求从页面发送回wordpress博客(admin-ajax.php).
这是通过(1)在服务器端生成随机数来完成的
$nonce = wp_create_nonce ('my-nonce');
Run Code Online (Sandbox Code Playgroud)
...(2)使该随机数可用于发送AJAX请求的Javascript代码.例如,您可以这样做:
function myplg_emit_scriptblock() {
$nonce = wp_create_nonce('myplg-nonce');
echo "<script type='text/javascript'>\n" .
" var WpPlgSettings = {\n" .
" ajaxurl : '" . admin_url( 'admin-ajax.php' ) . "',\n" .
" nonce : '" . $nonce . "'\n" .
" };\n" .
"</script>\n";
}
add_action('wp_print_scripts','myplg_emit_scriptblock');
Run Code Online (Sandbox Code Playgroud)
...然后(3)javascript ajax逻辑引用该全局变量.
var url = WpPlgSettings.ajaxurl +
"?action=my-wp-plg-action&" +
"nonce=" + WpPlgSettings .nonce +
"docid=" + id;
$.ajax({type: "GET",
url: url,
headers : { "Accept" : 'application/json' },
dataType: …
Run Code Online (Sandbox Code Playgroud) 我在我的 azure 网站(azure Active Directory、C#、MVC)上使用 OpenIdConnect 身份验证,并且随机收到此错误
IDX10311:requireNonce 为 true(默认),但validationContext.Nonce 为 null。无法验证随机数。如果不需要检查随机数,请将 OpenIdConnectProtocolValidator.RequireNonce 设置为 false
我正在使用 KentorOwinCookieSaver,据我所知,它是这个问题的解决方案,但显然我错了,因为它不断发生。我怎样才能阻止这个?
在ConfigureAuth方法中我有这一行
app.UseKentorOwinCookieSaver();
Run Code Online (Sandbox Code Playgroud) 我是密码学的新手。我需要使用具有某些配置的 AES 加密文本
Encryption mode: GCM
Key size: 256 bits
Nonce size: 96 bits
MAC size: 128 bits
Run Code Online (Sandbox Code Playgroud)
由于 AES 是一种对称算法。所以我有一个秘密钥匙。我用谷歌搜索并发现
nonce 是一个随机数,用于确保消息是唯一的
但我有疑问,如果 nonce 是随机数,我该如何进行解密。我是否需要将随机数与每个加密一起存储。或者我需要使用密钥拆分 nonce、cipher 和 mac 的任何其他方式。我如何使用提供的配置进行加密。
我想知道是否有办法使用OpenSSL或Crypto ++库生成Cryptographic Nonce.还有什么比使用autoseeded池生成一组随机字节更多的东西吗?
我正在使用 Golang 的加密包,特别是 crypto/aes,带有 32 字节的密钥(因此,AES-256)和 GCM 方法(Galois/Counter Mode)。
我从一个文件中读取了多个 16384 字节的块并生成了一个密码块、一个 GCM 方法和一个 12 字节的随机数。
然后,我将随机数添加到密文中,以便在解密时将它们拆分,以访问随机数(因为 12 字节的大小是已知的)。
人们会期望生成的密文是 16384 + 12 个字节 = 16396;但是,在实际加密时,我得到的大小为 16412 字节,因此添加了 16 字节。解密每个块后,我得到 16384 的“正常”大小。
这是一个快速示例。
block, _ := aes.NewCipher([]byte("W9FLKnyv397R82kKuFpfp6y8usGRf49a"))
gcm, _ := cipher.NewGCM(block)
nonce = make([]byte, gcm.nonceSize()) // nonceSize is 12 bytes
_, _ = io.ReadFull(rand.Reader, nonce) // populate nonce with random data
for {
src := make([]byte, 1024 * 16) // let's hypotise this src is a chunk of a file, …
Run Code Online (Sandbox Code Playgroud) nonce ×10
aes ×2
cryptography ×2
encryption ×2
php ×2
wordpress ×2
aes-gcm ×1
ajax ×1
apache ×1
asp.net-mvc ×1
azure ×1
c# ×1
c++ ×1
crypto++ ×1
forms ×1
go ×1
openssl ×1
security ×1
soap ×1
ws-security ×1