问题标签 [nonce]
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.
authentication - mongo 日志中的许多“收到错误的随机数或未调用 getnonce”
大家好,
现在我使用 mongo 作为我的数据库。我发现我的 mongo 连接有时会自动重置或失败。然后我在我的 mongo 日志文件中发现了一些奇怪的消息,即
我用谷歌搜索了它,但似乎很少有用户遇到过这个问题,我只在 github 中找到了链接https://github.com/mongodb/mongo/blob/master/db/security_commands.cpp的源代码。从代码来看,客户端发送user_name、use_password、nonce到服务器进行认证,日志消息是客户端发送的nonce与服务器分发的nonce不同造成的。
我的 mongo 驱动程序有什么问题吗?有人遇到过这个问题吗?
php - Java Webservice Client UsernameToken 等价于 PHP
我在 PHP 中构建了一个使用 UsernameToken 作为身份验证机制的 Web 服务。我有可以访问此 Web 服务的 PHP 客户端代码。现在我需要在 Java 中执行此操作。也许你可以帮助我!
可以使用以下 php 代码访问此服务:
这些值被解析到这个 Soap 头中。
使用此代码,我可以毫无问题地访问 Web 服务。现在我需要在 Java 中执行此操作。
我已经创建了必要的文件,实现了一个处理程序来添加一个带有 UsernameToken 的肥皂头。但是当我尝试访问 WS 时,我总是会收到“未授权”错误。我认为在创建 passdigest 或 nonce 条目时我遗漏了一些东西。
这是我计算它们的方法:
创建soap标头时将使用这些值:
这是生成的肥皂标题的样子:
有人看到我做错了吗?
oauth - 如果 Nonce 只能使用一次,那么 OAuth 中的时间戳有什么意义?
起初我误解了 OAuth 的时间戳实现,认为这意味着时间戳不在当前时间后 30 秒内将被拒绝,结果证明这是错误的,原因包括我们无法保证无论时区如何,每个系统时钟都足够同步到分钟和秒。然后我又读了一遍以获得更清晰的信息:
“除非服务提供商另有规定,否则时间戳以自 1970 年 1 月 1 日 00:00:00 GMT 以来的秒数表示。时间戳值必须是正整数,并且必须等于或大于前面使用的时间戳请求。”
来源: http: //oauth.net/core/1.0/#nonce
这意味着时间戳仅与来自同一源的先前请求进行比较,而不是与我的服务器系统时钟进行比较。
然后我在这里阅读了更详细的描述:http: //hueniverse.com/2008/10/beginners-guide-to-oauth-part-iii-security-architecture/
(TL;DR? - 跳到下面的粗体部分)
为防止再次使用(重放)受损请求,OAuth 使用随机数和时间戳。术语 nonce 表示“使用一次的数字”,是一个唯一且通常是随机的字符串,用于唯一标识每个签名请求。通过为每个请求设置一个唯一标识符,服务提供者能够防止请求被多次使用。这意味着消费者为发送给服务提供者的每个请求生成一个唯一的字符串,服务提供者跟踪所有用于防止它们被第二次使用的随机数。由于 nonce 值包含在签名中,因此攻击者无法在不知道共享秘密的情况下更改它。
对于服务提供商来说,使用 nonce 的成本可能非常高,因为他们需要永久存储收到的所有 nonce 值。为了使实施更容易,OAuth 为每个请求添加了一个时间戳值,这允许服务提供者仅在有限的时间内保留 nonce 值。当请求的时间戳早于保留的时间范围时,它会被拒绝,因为服务提供者不再具有该时间段的随机数。可以安全地假设在允许的时间限制之后发送的请求是重放攻击。OAuth 提供了实现时间戳的通用机制,但将实际实现留给每个服务提供者(许多人认为规范应该重新审视这一领域)。从安全的角度来看,真正的 nonce 是时间戳值和 nonce 字符串的组合。只有将它们结合在一起才能提供永远不会被攻击者再次使用的独特价值。
我感到困惑的原因是,如果 Nonce 只使用一次,为什么服务提供商会根据时间戳拒绝?“服务提供商不再拥有该时间段的随机数”让我感到困惑,听起来好像可以重复使用随机数,只要它在最后一次使用的 30 秒内。
那么任何人都可以为我解决这个问题吗?如果 nonce 是一次性使用,并且我没有将时间戳与我自己的系统时钟进行比较(因为这显然不可靠),那么时间戳的意义何在。时间戳只会相互关联是有道理的,但对于独特的随机数要求,它似乎无关紧要。
zend-framework - zend openid 不会自动清理 nonce 文件吗?
我正在使用 zend OpenID 库:https ://github.com/marcinwol/zfopenid 效果很好。但是,问题不在于清理 tmp 文件夹文件 [nonce 文件]。似乎 Zend_OpenId_Consumer_Storage_File 的 purgeNonces 成员在执行的任何地方都没有被调用。 http://framework.zend.com/manual/1.11/en/zend.openid.consumer.html dbstorage 似乎清除了过期数据。但是,这也不是清除 Nonce。我打算使用 dbstorage。任何示例将不胜感激。
谢谢
我找到了一些信息,我们不需要像单个 id 那样删除发现文件。 http://openid.net/specs/openid-authentication-2_0.html#verify_nonce 按照这个,Zend_OpenId_Consumer_Storage_File 不会删除 nonce 文件。每当我们想调用 purgeNonce 时,我们必须使用“时间戳可用于拒绝与当前时间相距太远的响应”。这样我就可以删除旧的 nonce 文件。此外,dbstorage 示例的 isUniqueNonce 必须检查同一 OP 的重复随机数,而不是所有 OP。如果有误,请纠正我的理解。
java - Java 身份验证库
我正在开发一个服务器/客户端 Java 应用程序,我需要在发送数据之前对客户端进行身份验证,还需要在身份验证后加密发送的数据并确保其新鲜度
我想知道我可以用来做到这一点的最好的图书馆是什么?
ajax - Wordpress 随机数检查总是错误的
我在通过 ajax 请求进行基本随机数验证时遇到问题。
这些是我的脚本加载器和 css 加载器函数:(在 gallery.php 中)
在我的 javascrtip 文件中:(在 gallery.js 中)
我的 ajax 调用将从 php 访问 do_upload 操作。这会将接收到的 nonce 字段附加到响应中...(返回到 gallery.php)
收到的结果如下所示: c4817b947a {"success":false,"debugNonce":"c4817b947a"}
第一个 c4817b947a 是因为来自 nonce 生成函数的回声。它不会影响验证发生的方式。
我的结论是 wp_verify_nonce 总是失败。
我在本地主机上使用 wp 3.2.1,全新安装,没有插件。
.net - 如何在 WSE 3.0 (.NET) 中将 EncodingType 属性添加到 UsernameToken 的 Nonce 元素
我正在尝试使用 WSE 3.0 从 MVC3 .NET Web 应用程序调用 Java Web 服务。
但是,Web 服务需要 UsernameToken 的 Nonce 元素上的“EncodingType”属性。以下是与此 Java Web 服务一起正常工作的示例 SOAP 信封:
以下是 VS2010 生成的代理生成的 SOAP 信封(在 Fiddler 中捕获):
如果缺少此属性,此 Web 服务将返回“提供了无效的安全令牌(处理用户名令牌时发生错误)”
如何添加 EncodingType 属性?
cocoa - 在相同加密(IV)可可时更改密文?
我正在阅读有关如何对密钥进行加盐以使您的加密安全的教程,但无法充分利用它。我对密码学知之甚少,需要一些帮助。我正在使用 commoncrypto 加密文件,并且完成了,除了它不安全的事实......当用户使用相同的确切密钥两次加密相同的确切文件时,密文不能相同。
这就是我所拥有的:
如果有人可以帮助我,并确切地告诉我我将如何实施盐,那就太好了!再次感谢!
wordpress - 在 WordPress 插件中使用 Nonce 和 Ajax
我正在尝试在 WordPress 插件中使用随机数。我有一个表格,我想在上面使用 nonce。
在 php 中:
在 jQuery 文件中:
我是否在 jQuery 中正确发布了随机数?
在 php 中:
有什么建议么?如果我去掉所有关于 nonce 的代码,一切正常。关于为什么它不起作用的任何想法?或者我该如何调试它?谢谢!
谢谢你。
facebook - 有时 Facebook 在身份验证期间不会返回 auth_nonce 参数
我auth_nonce
在服务器端身份验证流程中使用该参数。但是,我遇到了一个问题,有时 Facebook 不会auth_nonce
在最后一步返回参数,这当然会导致身份验证失败。
通常它工作得很好。这些情况是当用户最初登录到我的应用程序时,我请求 Facebook 重新验证他们 ( auth_type=reauthenticate
)。我从未见过这种失败。
当它确实失败时,总是在用户登录之后,并且他们的 auth_token 已经过期,我在页面加载之间默默地重新验证他们以获得新的 auth_token。
在后一种情况下,URL 重定向看起来像这样:
http://myapplication.url
(通知令牌已过期,因此将用户发送到...)https://www.facebook.com/dialog/oauth?client_id={APP_ID}&redirect_uri=http%3a%2f%2fmyapplication%2eurl%2ffacebook%2fafterlogin&scope=list,of,permissions&display=page&auth_nonce=Vr6EgapnMFIKrbMtVrdcZDTbioGe715pWDtMveA8z4xVNMR5IzGYoPN3rSxf
(Facebook 将他们重定向到...)https://www.facebook.com/dialog/permissions.request?app_id={APP_ID}&display=page&next=http%3A%2F%2Fmyapplication.url%2Ffacebook%2Fafterlogin&response_type=code&auth_nonce=Vr6EgapnMFIKrbMtVrdcZDTbioGe715pWDtMveA8z4xVNMR5IzGYoPN3rSxf&fbconnect=1&perms=list%2Cof%2Cpermissions
(最后,我们被重定向回......)http://myapplication.url/facebook/afterlogin?code={Big long code here}#_=_
在最后一次通话中,我得到了以下 URL:
https://graph.facebook.com/oauth/access_token?client_id={APP_ID}&redirect_uri={THE_PROPER_REDIRECT_URL}&client_secret={APP_SECRET}&code={Big long code here}
我得到的答复是这样的:
access_token={AUTH_TOKEN}&expires=5083
根据文档(以及我在正常身份验证期间的经验),auth_nonce
最终回复中应该有一个我可以验证的参数。
我在这里做错了吗?