问题标签 [http-digest]

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 投票
2 回答
5218 浏览

iphone - 在 iPhone 上使用 HTTP 摘要式身份验证

我有一个与使用 HTTP Digest 身份验证的服务器通信的应用程序。

在我看来,iPhone 中的“会话”管理对我们开发人员来说是相当“黑匣子”。我们真的看不到框架如何处理/持久化 http 会话吗?

如果我只是在这里昏暗,有人愿意解释如何在 iPhone 上处理 HTTP Digest 身份验证吗?

我的基本经历是:

  • 向安全 URL 发出请求
  • 服务器发送 401
  • 客户端创建并保存一个凭证,并将其传递回服务器
  • 服务器验证凭证,如果验证则完成请求,如果没有则发送另一个 401。
  • 发出后续请求以保护 url
  • 服务器再次请求授权......

这适用于单个请求,但如果我提出额外的后续请求,服务器会再次请求授权。服务器为特定用户保留了一个会话,但由于某种原因 iPhone 没有在同一个会话中发出请求......因此,服务器必须丢弃身份验证对象并在每次客户端时创建一个新对象向安全 URL 发出请求。

我确定这不是正确的行为。

如果我们看看浏览器在这种情况下的行为:

  • 浏览器从安全 url 请求数据
  • 服务器发送 401
  • 浏览器提示用户输入凭据,将其持久化,将其传递给服务器
  • 服务器验证凭据,如果验证则返回数据,否则发送另一个 401。
  • 由于浏览器管理会话,因此不会提示对安全 url 发出的后续请求提供凭据。

我正在创建 NSURLCredential 并将其保存在 NSURLCrendtialStorage 中。然后,当应用程序收到“didReceiveAuthenticationChallenge”时,我从存储中检索凭证并将其传回,如果凭证不存在(在第一个请求中)则创建凭证。

任何帮助将不胜感激。谢谢。

0 投票
5 回答
1591 浏览

authentication - 使用 SSL 的密码哈希

好吧,这听起来像是一个奇怪的问题。跳上我之前请仔细阅读好吗?;-)

想象一下这种情况:

  1. 我们有一个服务器和一个客户端。
  2. 他们使用 SSL 连接。
  3. 客户端使用密码在服务器上创建帐户。
  4. 但是,他实际上通过网络传递给服务器的是密码的哈希(+salt)(不是密码)
  5. 服务器将此接收到的密码哈希保存在数据库中(再次用盐哈希)
  6. 在登录时,为了进行身份验证,用户重新发送密码哈希(不是密码!)。

好的,所以是的,我意识到这听起来很奇怪。是的,整个对话都在 SSL 中,所以你可以只发送密码明文。是的,我意识到可以以散列形式安全地存储明文密码。

这是我要强调的一点:真诚地说“我们永远不会知道您的密码”对我们的业务很有用。

请注意,我并不是说“我们不会以明文形式存储您的密码”,而是说我们真的、永远不会知道它;你从来没有把它给我们。

(想要这个的原因是不相关的,足以说用户的密码用于其他东西,例如文件加密)。

是的,我意识到您可能会说,以正常的方式执行此操作“在您进行散列时,密码只会在内存中以明文形式保存 5 毫秒”,但这更多是关于可否认性。即,我们可以说 100% 我们甚至没有收到您的密码。

好的,这是问题:

  • 有没有人做过或听说过这种事情?

  • 这样做有什么安全隐患?

我很难看到不利的一面。例如:

  • 没有重播攻击(因为会话是使用 SSL 加密的,所以攻击者看不到哈希值)
  • 无法查看数据库,因为散列本身就是,呃...,散列

好的,你现在可以跳到我身上了 :)

欢迎提出想法,评论。

谢谢,

约翰

更新:只是想澄清一下:我并不是说这在某种程度上是对身份验证过程安全性的改进。但是,相反,它允许用户的“真实”密码保密,甚至对服务器也是如此。因此,如果真实密码用于加密文件,则服务器无权访问该密码。

我对我想要这个的理由完全满意,问题是它是否会阻碍身份验证过程的安全性。

0 投票
2 回答
548 浏览

ruby - 是否有任何支持 HTTP Digest 的 Ruby 库?

是否有任何支持 HTTP Digest 的 Ruby 库?

0 投票
1 回答
2010 浏览

java - 如何为嵌入式码头/弹簧安全启用 HTTP 摘要?

我有两个小型 http 服务器。一种使用 sun (com.sun.net.httpserver) 服务器,另一种使用嵌入式码头。现在我试图让 HTTP 摘要至少在码头服务器上工作(嗯,这是使用码头而不是 sun httpserver 的原因之一)。无论我使用哪个服务器,基本设置都是通过 Spring IOC 容器完成的。

我不喜欢为此目的使用 servlet(好吧,使用码头我得到 HTTPServletRequest 和 HTTPServletResponse 对象)而且我是 Spring Security 的新手(我只是使用 Spring Security,因为它似乎是关于 HTTP 的最灵活的方法摘要认证)。我发现的关于 spring 安全性的所有内容都是相当简洁的文档或完全面向 servlet/filter 的。

我想知道哪种方法是为我的服务器启用 http 摘要的最简单方法。如果 spring security 是如何将 spring 类连接到我的 IOC 容器中的答案。我可以想象处理http摘要需要一些手动操作。只要我有一些开始的提示,这对我来说很好。

0 投票
2 回答
168 浏览

http-authentication - HTTP 身份验证何时发生?其中之一是使用 http://peter:mypassword@www.somesite.com 吗?

好像有2个HTTP Authentication:Basic access authenticationDigest access authentication

所以我认为一般来说,用户尝试访问一个 URL,Web 服务器返回 401 Unauthorized,然后浏览器弹出一个应用程序窗口,要求输入用户名和密码,然后在 HTTP 标头中设置凭据,然后发送再次 HTTP 请求。

那么http://peter:mypassword@www.somesite.com呢?那是不是应该不等待401回来而是提前提供用户名和密码?不知何故,我尝试了 http://peter:mypassword@www.google.com或 yahoo 但在 Fiddler 内部(监控网络流量),我在 HTTP 请求中看不到任何凭据信息?

0 投票
0 回答
734 浏览

gwt - 使用 GWT 的 Restlet 以使用 HTTP DIGEST 调用 REST 服务

我正在使用 GWT 2.2 和 restlet-gwt-2.1m4。

我试图调用使用 HTTP Digest 的休息服务。

所以我使用了 Restlet wiki 上的教程:

http://wiki.restlet.org/docs_2.1/13-restlet/27-restlet/46-restlet/112-restlet.html

首先是这不编译:

所以我把它改成

我的第二个问题是没有发送请求。我检查了 Firebug,没有任何东西(没有 GET 请求)。

似乎 resource.get(); 根本没有发送任何东西。

知道我缺少什么吗?教程中的代码真的有效吗?

提前致谢

0 投票
1 回答
1108 浏览

ruby-on-rails - 在 authenticate_or_request_with_http_digest 中获取密码

我有一个连接到 iphone 应用程序的应用程序,该应用程序又通过 http_digest 对其用户进行身份验证。

我正在使用 authlogic,在我的架构中,网站的用户是“用户”,手机应用程序的用户是“人”。所以,我有 user_sessions 和 people_sessions。为了处理 http_digest 身份验证,我使用了如下的 authenticate_or_request_with_http_digest 方法:

我可以在日志中看到密码为零:只有电子邮件被传递到 authenticate_or_request_with_http_digest 块的内部。

我用这样的 curl 调用来测试它:

我希望“fakename@madeup.xyz”和“apass”能够传递到块的内部。一旦我有了密码,我就可以使用电子邮件和密码的组合以正常方式查找(或不查找)用户。有谁知道我也可以访问密码吗?

感谢任何建议 - 最大

编辑 - 在进一步的谷歌搜索中,我认为我使用这种方法是错误的:我应该只返回密码或加密密码。但是,我如何将它与作为 http_digest 用户名的一部分传递的密码进行比较?

0 投票
2 回答
834 浏览

java - Restlet 2.0.8:单个restlet应用程序实例的多种身份验证方法(BASIC,DIGEST)?

我们正在使用 Restlet 2.0.8 并有一个应用程序实例覆盖 org.restlet.Application#createInboundRoot()。在那里,我们创建 Router 实例并(目前)返回一个 DigestAuthenticator,如下面的代码所示:

我想要实现的是:

  • 让 EchoResource 使用摘要身份验证,而 StatusResource 应该使用 HTTP 基本身份验证

Restlets可以做到这一点吗?

最好的,克里斯

0 投票
1 回答
324 浏览

javascript - 是否有跨浏览器的方法来忽略 XHR 触发的 401 错误?

为了尽量保持 REST 方法的纯洁性,我决定将应用程序作为API - 直到最后一点。

不幸的是,我遇到了一个绊脚石。在用 PHP 编写 Digest 身份验证处理程序后,我发现自己无法让 Web 浏览器中的用户体验像基于表单的身份验证方法那样友好。

这样做的原因是,即使我可以通过 Javascript 模拟 Digest 身份验证响应,使用 HTML 表单中的用户名和密码(nonce由于它们的生成方式,我可以安全地将值提供给脚本),失败时,浏览器仍然显示标准的、丑陋的身份验证提示。

有没有办法解决?较早的问题引用mozBackgroundRequest,但这似乎很难跨浏览器。

谢谢!

0 投票
1 回答
1927 浏览

symfony - 需要 Symfony2 http_digest 防火墙配置示例

我想将 http_basic 更改为 http_digest 作为防火墙,但并没有真正记录如何配置 http_digest。

那里的参考资料似乎不完整或不是最新的:

http://symfony.com/doc/2.0/reference/configuration/security.html

然而,本书中的示例使用领域而不是提供者。

http://symfony.com/doc/current/book/security.html

至少该示例有效,但是当我将 http_basic 更改为 http_digest 时,缺少(未记录的)密钥。

ErrorException:注意:未定义索引:在 ..\vendor\symfony\src\Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\HttpDigestFactory.php 第 80 行中键入

添加密钥似乎有效,但登录后会导致另一个错误:

致命错误:在第 79 行调用 ..\vendor\symfony\src\Symfony\Component\Security\Http\Firewall\DigestAuthenticationListener.php 中未定义的方法 Symfony\Component\Security\Http\EntryPoint\DigestAuthenticationEntryPoint::getKey()

这就是我不知道我的配置中缺少什么的地方。我只需要一个使用 Symfony 2 的 http_digest 工作示例。